1 Conceito, Objetivos e Dados


Consiste em um conjunto de métodos estatísticos usados para simplificar a interpretação de grandes conjuntos de dados. A aplicação pode ocorrer em diversas áreas do conhecimento.

Segundo Mingoti (2005, p. 21), “embora historicamente o uso de métodos multivariados esteja relacionado com trabalhos na Psicologia, Ciências Sociais e Biológicas, mais recentemente eles têm sido aplicados em um grande universo de área diferentes, como: Educação, Geologia, Química, Física, Engenharia, Ergonomia, etc.”.

Basicamente os objetivos são:

  1. Redução ou simplificação da base de dados sem sacrificar informação importante;

  2. Ordenação e agrupamento (classificação) - criar grupos de objetos (ou variáveis) semelhantes com base em várias características. Por isso é multivariada;

  3. Investigação da estrutura de dependência entre as variáveis. Podemos ter um conjunto de dados relacionados com tecnologias utilizadas nas fazendas e outro conjunto de dados relacionados com característica do dono da propriedade. A dependência entre estes grupos de variáveis pode indicar porque algumas propriedades usam mais tecnologias do que outras;

  4. Predição - realizar previsões;

  5. Construção de hipóteses e testes.

As técnicas de Análise multivariada são muito utilizadas para a construção de índices. Um índice sintetiza em uma única variável a informação de todas as variáveis que foram medidas sobre o fenômeno. Como exemplo, pode-se citar Índice de Desemprego, Índice de Qualidade de Vida, Índice de Qualidade Ambiental, Índice de Desenvolvimento Humano (IDH), entre outros. Nestes casos, a Análise de Componentes Principais ou Análise Fatorial são técnicas que podem ser utilizadas (LIMA, 2015).

Outra aplicação interessante é quando se procura dividir um conjunto de objetos em grupos que sejam os mais homogêneos possíveis dentro do grupo e heterogêneos entre si. Uma empresa pode buscar estratificar seus clientes, dividindo-os em grupos e traçando objetivos para cada grupo separadamente. Pode-se separar os municípios de determinado estado em grupos homogêneos com o intuito de delinear programas adequados para os diferentes grupos. Nestes casos, a Análise de Cluster é a técnica adequada (LIMA, 2015).

Outra situação é a enfrentada pelas seguradoras para realização de seguros de veículos. Cada cliente se encaixa em determinado perfil que pode ter maior ou menor risco de sinistro. Neste caso, pode-se aplicar Análise Discriminante buscando identificar a qual grupo de risco de sinistro um determinado elemento tem mais chance de pertencer (LIMA, 2015).

Os dados para Análise multivariada em uma amostra de seção cruzada são geralmente compostos de variáveis (renda, idade, anos de escolaridade, etc.) e observações (pessoa, família, escola, município, estado, país, etc.). Dispostos em uma tabela os dados formam uma matriz em que cada coluna se refere a uma variável e cada linha a uma observação. As observações são as unidades de Análise ou unidades amostrais e as variáveis são as características medidas nas observações. Assim, os dados usados são tipicamente formados por n observações em p variáveis.

#Verificando o diretorio que o R esta direcionado
getwd()
## [1] "/Users/jricardofl/Dropbox/Embrapa/2022/PPGDIDES/Análise Multivariada/multivariada/estatistica1"
#Direcionado o R para o Diretorio a ser trabalhado
setwd('/Users/jricardofl/Dropbox/tempecon/dados_censoagro')

#Pacote
library(readxl)

#Entrada dos dados
dados <- read_excel("artigo.xlsx")

# Nomes das variáveis utilizadas
#
#x1 Porcentagem dos estabelecimentos que usam força animal
#x2 Porcentagem dos estabelecimentos que usam força mecânica
#x3 Porcentagem da área com pastagens que é plantada
#x5 area trabalhada como porcentagem da área aproveitável
#x6 Area com lavouras permanentes e temporárias como proporção da área aproveitável
#x7 Numero de tratores por equivalente homem
#x8 Numero de tratores por área explorada
#x9 Numero de arados por área explorada
#x10    Numero de colheitadeiras por área explorada
#x11    Valor total dos combustíveis consumidos por área explorada
#x12    Quantidade de energia eletrica consumida por área explorada
#x13    Quantidade de energia eletrica consumida po equivalente homem
#x14    Valor total dos bens por área explorada
#x15    Valor total dos bens por equivalente homem
#x16    valor total dos investimentos por area explorada
#x17    Valor total dos investimentos por equivalente homem
#x18    Valor total dos financiamentos em 2006 por área explorada
#x19    Valor total dos financiamentos em 2006 por equivalente homem.
#x20    Valor total da produção em 2006, por área explorada
#x21    Valor total da produção em 2006, por equivalente-homem
#x22    Valor total das despesas em 2006, por área explorada
#x23    Valor total das despesas em 2006, por equivalente homem
#x24    Despesas com adubos, corretivos, sementes e mudas, agrotóxicos, medicamenteos para animais, sal e rações por área explorada
#x25    Despesas com adubos, corretivos, sementes e mudas, agrotóxicos, medicamenteos para animais, sal e rações por equivalente homem
#x26    Assistência Técnica
#x27    uso de agrotóxico para controle de pragas e doenças
#x28    uso de controle alternativo de pragas e doenças
#x29    irrigação

#Visualizaçao dos dados
head(dados, 15)
## # A tibble: 15 × 28
##       x1    x2    x3    x5    x6      x7      x8      x9     x10     x11     x12
##    <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1  14.5 32.7   26.0  47.7 38.7  0.0678  3.33e-3 1.46e-2 3.38e-4 0.0278  0.0130 
##  2  29.9 15.8   63.7  54.2 11.8  0.0207  6.70e-4 7.71e-3 0       0.0131  0.00773
##  3  13.1 14.9   49.6  46.8 17.3  0.0401  1.30e-3 1.37e-3 1.04e-4 0.0180  0.00785
##  4  17.7  8.97  74.7  52.9  2.42 0.108   4.35e-4 4.71e-4 1.05e-3 0.00627 0.00422
##  5  17.0 38.6   32.0  29.1 14.7  0.0825  2.46e-3 1.58e-2 1.37e-4 0.0197  0.00898
##  6  21.2 11.9   57.6  39.6  8.80 0.00896 2.71e-4 2.37e-3 0       0.0267  0.0133 
##  7  30.5 32.1   47.9  45.9 24.9  0.0453  1.42e-3 1.13e-2 2.58e-4 0.0250  0.00711
##  8  27.5 22.5   66.0  35.5 16.8  0.0559  1.07e-3 1.05e-3 0       0.00886 0.00579
##  9  39.8 24.5   69.8  40.8 14.3  0.0177  2.38e-4 5.25e-3 0       0.0108  0.00409
## 10  13.4 65.4   21.6  53.8 50.1  0.08    5.50e-3 1.20e-2 0       0.103   0.0224 
## 11  38.3 13.8   43.2  61.3 43.5  0.0978  2.61e-3 4.59e-2 0       0.0211  0.0274 
## 12  45.2 13.5   12.4  20.7 15.9  0.0108  8.57e-4 6.75e-3 0       0.00941 0.0126 
## 13  27.2 26.3   37.6  21.4  7.15 0.0218  3.59e-4 4.60e-3 0       0.0122  0.00535
## 14  50.4  9.24  19.9  22.2 11.2  0.0269  2.46e-4 7.32e-3 0       0.0103  0.00803
## 15  49.8 11.0   31.3  36.1 22.7  0.0244  1.45e-3 1.83e-2 1.32e-4 0.0121  0.0142 
## # … with 17 more variables: x13 <dbl>, x14 <dbl>, x15 <dbl>, x16 <dbl>,
## #   x17 <dbl>, x18 <dbl>, x19 <dbl>, x20 <dbl>, x21 <dbl>, x22 <dbl>,
## #   x23 <dbl>, x24 <dbl>, x25 <dbl>, x26 <dbl>, x27 <dbl>, x28 <dbl>, x29 <dbl>
summary(dados)
##        x1               x2                x3              x5        
##  Min.   : 0.000   Min.   : 0.3141   Min.   : 0.00   Min.   : 4.145  
##  1st Qu.: 9.273   1st Qu.: 3.1585   1st Qu.:12.45   1st Qu.:31.239  
##  Median :21.774   Median : 6.1091   Median :27.93   Median :48.746  
##  Mean   :28.304   Mean   :10.7766   Mean   :31.25   Mean   :51.011  
##  3rd Qu.:43.841   3rd Qu.:13.9814   3rd Qu.:45.17   3rd Qu.:71.117  
##  Max.   :88.970   Max.   :65.4206   Max.   :99.39   Max.   :99.126  
##        x6               x7                x8                  x9          
##  Min.   : 1.854   Min.   :0.00000   Min.   :0.0000000   Min.   :0.000000  
##  1st Qu.:15.328   1st Qu.:0.01494   1st Qu.:0.0005492   1st Qu.:0.001005  
##  Median :27.945   Median :0.02586   Median :0.0011719   Median :0.003356  
##  Mean   :36.695   Mean   :0.04053   Mean   :0.0019096   Mean   :0.010467  
##  3rd Qu.:56.710   3rd Qu.:0.05072   3rd Qu.:0.0026078   3rd Qu.:0.012678  
##  Max.   :98.477   Max.   :0.52381   Max.   :0.0235613   Max.   :0.111792  
##       x10                 x11               x12                x13          
##  Min.   :0.000e+00   Min.   :0.00000   Min.   :0.001409   Min.   : 0.03629  
##  1st Qu.:0.000e+00   1st Qu.:0.01189   1st Qu.:0.014036   1st Qu.: 0.32684  
##  Median :0.000e+00   Median :0.02268   Median :0.024761   Median : 0.60987  
##  Mean   :9.952e-05   Mean   :0.03464   Mean   :0.055689   Mean   : 0.99300  
##  3rd Qu.:0.000e+00   3rd Qu.:0.04019   3rd Qu.:0.047151   3rd Qu.: 1.18653  
##  Max.   :3.570e-03   Max.   :0.33107   Max.   :2.292243   Max.   :14.45350  
##       x14               x15              x16               x17          
##  Min.   : 0.4787   Min.   :  4.73   Min.   :0.00000   Min.   :  0.0000  
##  1st Qu.: 1.9221   1st Qu.: 45.17   1st Qu.:0.03837   1st Qu.:  0.7292  
##  Median : 3.3407   Median : 83.51   Median :0.06399   Median :  1.4646  
##  Mean   : 4.8614   Mean   :104.56   Mean   :0.08980   Mean   :  2.8145  
##  3rd Qu.: 5.6912   3rd Qu.:133.06   3rd Qu.:0.09981   3rd Qu.:  2.6578  
##  Max.   :56.3753   Max.   :550.05   Max.   :0.78753   Max.   :163.4401  
##       x18               x19                x20                x21         
##  Min.   :0.00000   Min.   :  0.0000   Min.   : 0.05285   Min.   :  2.074  
##  1st Qu.:0.02011   1st Qu.:  0.5007   1st Qu.: 0.42035   1st Qu.: 11.252  
##  Median :0.03563   Median :  0.8523   Median : 1.01866   Median : 22.177  
##  Mean   :0.06214   Mean   :  4.1450   Mean   : 1.97985   Mean   : 36.598  
##  3rd Qu.:0.06160   3rd Qu.:  1.2654   3rd Qu.: 2.23304   3rd Qu.: 34.872  
##  Max.   :2.62630   Max.   :545.0519   Max.   :53.67879   Max.   :506.140  
##       x22                x23                 x24                 x25          
##  Min.   : 0.02411   Min.   :   0.8373   Min.   : 0.004046   Min.   :  0.1063  
##  1st Qu.: 0.18269   1st Qu.:   4.4894   1st Qu.: 0.036479   1st Qu.:  1.0406  
##  Median : 0.34980   Median :   7.7355   Median : 0.096662   Median :  2.1045  
##  Mean   : 0.75201   Mean   :  17.9948   Mean   : 0.353451   Mean   :  6.9821  
##  3rd Qu.: 0.66069   3rd Qu.:  13.8213   3rd Qu.: 0.182730   3rd Qu.:  3.3604  
##  Max.   :24.01334   Max.   :1087.0980   Max.   :20.588395   Max.   :326.5452  
##       x26               x27              x28              x29         
##  Min.   : 0.2359   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
##  1st Qu.: 3.1542   1st Qu.: 8.425   1st Qu.: 1.068   1st Qu.: 0.3109  
##  Median : 6.0857   Median :16.163   Median : 2.374   Median : 1.2659  
##  Mean   :10.5093   Mean   :23.940   Mean   : 4.700   Mean   : 4.6938  
##  3rd Qu.:12.1288   3rd Qu.:36.414   3rd Qu.: 5.116   3rd Qu.: 5.8438  
##  Max.   :59.4433   Max.   :75.873   Max.   :43.162   Max.   :58.0766


2 Técnicas da Análise Multivariada


Pode-se considerar que a estatística multivariada se divide em dois grupos: o primeiro consiste nas técnicas de simplificação da estrutura de variabilidade dos dados. Principalmente, fazem parte deste grupo a Análise de Componentes Principais, Análise Fatorial, Correlações Canônicas, Cluster e Discriminante.

O segundo grupo concentra os métodos de estimação de parâmetros, como na análise de Regressão Simples e Múltipla.

Para um estudo aprofundado das técnicas de Análise Multivariada, é importante revisar conceitos de Estatística Básica: média, variância, desvio padrão, covariância, correlação seriam as mais relevantes.

E também é importante revisar conceitos de álgebra matricial: vetores, matrizes, combinações lineares, dependência linear, raízes e vetores característicos e decomposição espectral, basicamente.


2.1 Análise de Componentes Principais


A Análise de Componentes Principais (ACP) é uma técnica de Análise Multivariada que consiste em transformar um conjunto original de variáveis em outro conjunto, os Componentes Principais (CP) com propriedades específicas. Os CP’s são combinações lineares das variáveis originais e são estimados de forma a captar o máximo da variação total dos dados. O processo de estimação é tal que o primeiro CP capta o máximo de variância possível, o segundo capta o máximo possível do restante de variância, o terceiro o máximo possível do restante de variância, e assim sucessivamente.

A ACP é apropriada quando as variáveis sob investigação são todas de mesma natureza, de modo que não tenhamos, por exemplo, uma ou mais variáveis dependentes e um conjunto de covariáveis, como no caso de análise de regressão.

Segundo Mingoti (2005, p. 59), “seu objetivo principal é o de explicar a estrutura de variância-covariância de um vetor aleatório, composto de p-variáveis aleatórias, através da construção de combinações lineares das variáveis originais. Estas combinações lineares são chamadas de componentes principais e são não correlacionadas entre si”.

Uma combinação linear de vetores ou de variáveis é um novo vetor (ou nova variável) defindo por

\[ y=a_1x_1+a_2x_2+a_3x_3+ \dots + a_px_p \] “Se temos p-variáveis originais é possível obter-se p componentes principais. No entanto, em geral deseja-se obter ‘redução do número de variáveis a serem avaliadas e interpretação das combinações lineares construídas’, ou seja, a informação contida nas p-variáveis originais é substituída pela informação contida em k (k\(<\)p) componentes principais não correlacionados” (MINGOTI, 2005, p. 59).

A ideia é que se algumas das variáveis originais são correlacionadas, elas estão, efetivamente, “dizendo a mesma coisa”. Nesse caso, um conjunto menor de variáveis, não-correlacionadas, pode ser tão eficaz quanto o conjunto de variáveis originais para explicar a estrutura de variância-covariância dos dados.

Matricialmente, pode ser escrita como \(y=a'x\) onde os a’s são as constantes que definem a combinação linear e são determinadas de forma a atender às características da combinação linear que se deseja. Como as variáveis são dadas, os coeficientes a’s são determinados de forma a atender às restrições estabelecidas, ou seja, o princípio da técnica. As combinações lineares tem média e variância definidas, respectivamente, por \(E(Y)=a'\mu\) e \(V(Y)=a'\sum a\).

Mais de uma combinação linear pode ser definida de um conjunto de variáveis. Em geral, com p variáveis pode-se formar p combinaçoes lineares diferentes.

A ACP transforma um conjunto de variáveis correlacionadas em um conjunto de variáveis não-correlacionadas. Assim, se as variáveis originais são aproximadamente não correlacionadas, não faz sentido ser feita uma ACP.

Variáveis quantitativas usadas em análise multivariada são, geralmente, expressas em unidades diferentes. Diferenças de escalas afetam a contribuição da variável para a variância generalizada. Para usar essas variáveis em uma técnica multivariada elas precisam ser transformadas para uma escala comum. Entre os métodos usados alguns eliminam diferenças em tamanho (escala) outras reduzem tamanho e variabilidade para uma escala comum.

O método mais usado para tornar variáveis comparáveis é a Padronização, que consiste em subtrair a média e dividir pelo desvio padrão. Além de simplificar cálculos e manipulações matemáticas, a padronização de variáveis é importante para resolver o problema de unidades de medidas diferentes das variáveis e do desbalanceamento entre as variâncias. Toda variável padronizada tem média zero, variância igual a um e é adimensional.

Uma questão importante é que a covariância entre variáveis padronizadas é igual a correlação entre variáveis originais. Assim, usar a matriz de correlações das variáveis ao invés da matriz var-cov é o mesmo que trabalhar com variáveis padronizadas.

Existe uma tendência para que a variável com maior volatilidade cause uma desestabilização na Análise de Componentes Principais e também na Análise Fatorial. A solução é padronizar as variáveis de forma que tenham média zero e variância unitária.

A Análise passa a ser determinar as raízes características e os vetores característicos da matriz de correlações.

Sobre raízes e vetores característicos, uma matriz quadrada A tem raízes características \(\lambda_i\) e vetores característicos \(X_i\) dados pela seguinte relação \(AX=\lambda X\). Uma matriz \(p_xp\) tem p raízes e p vetores característicos e a relação pode ser escrita como \(AX_i=\lambda_i X_i\) o que, intituitivamente, significa que existem constantes \(\lambda_i\) e vetores \(X_i\), tais que a multiplicação da matriz pelo vetor é igual à multiplicação do vetor por uma constante.

As raízes e vetores característicos são encontrados a partir de

\[ AX=\lambda X \]

\[ AX - \lambda X= 0 \] \[ (A- \lambda I)X= 0 \]

sendo que a equação é verdadeira para qualquer \(\lambda\) se \(X=0\), mas esta solução não interessa. Para se ter uma solução \(X \neq 0\), a inversa da equação característica \((A- \lambda I)\) não deve existir e, para isto, o seu determinante precisa ser igual a zero. Assim, pode-se entender \(\lambda\) (raízes características) como os valores que zeram o determinante da equação característica.

Os vetores característicos não são únicos, devendo ser normalizados. Para cada raiz característica existe um vetor característico que é encontrado resolvendo a expressão \((A-\lambda_i I)X_i=0\).

As raízes características possuem um conjunto de propriedades:

  1. \(tr(A) = \sum_{i=1}^{p} \lambda_i\);
  2. \(det(A) = \Pi_{i=1}^{p}\). Se alguma raiz característica for zero, o determinante de A é zero e a matriz não possui inversa;
  3. Para uma matriz diagonal, as raízes são os elementos da diagonal principal;
  4. Para uma matriz triangular, as raízes são os elementos da diagonal principal;
  5. Raízes de A são iguais as de \(A'\);
  6. As raízes de \(A^{-1}\) são iguais a \(1/ \lambda_i\), mas os vetores característicos são os mesmos;
  7. Se A é ortogonal, \(\lambda_i=1\) ou \(-1\);
  8. Se A é uma matriz idempotente, \(\lambda_i=1\) ou \(0\);
  9. Raízes características de matrizes simétrica são números reais;
  10. Os vetores característicos de matrizes simétricas são ortogonais, ou seja, não correlacionados.


2.1.1 Obtenção dos Componentes Principais


Considere um vetor de p variáveis padronizadas dada por

\[ \mathbf{Z'}=\left[\begin{array}{llll} Z_1 &Z_2 &\dots &Z_p \end{array}\right] \] os CP’s são combinações lineares dos \(Z's\)

\[ Y_j=a'_jZ=a_{j1}Z_1+a_{j2}Z_2+\dots+a_{jp}Z_p \]

sendo que é possível ter até p CP’s, com o primeiro tendo a maior variância, o segundo CP tendo a segunda maior variância e sendo ortogonal ao primeiro, etc. Neste caso, a variância de \(Z_i\) é dada por \(V(Z_i)=a_i'\sum a_i\) e o que deve ser feito é encontrar os coeficientes de \(a_i\) das combinaçoes lineares de forma a satisfazer as condições acima definidas.

É possível demonstrar (LIMA, 2015) que a solução se resume em encontrar as raízes características \((\lambda_i)\) e os vetores característicos \((a_i)\) da matriz var-cov \((\sum)\) das variáveis. Os coeficientes dos CP’s são os elementos dos vetores característicos \((a_i)\).

Além disso, é possível demonstrar que \(\sum a_i= \lambda a_i\) e, consequentemente,

\[ V(Z_i)=a_i'\sum a_i = a_i'\lambda a_i = \lambda a_i'a_i \]

e que a \(V(Z_i) = \lambda _i\) pois pela ortogonalidade \(a_i'a_i =1\) (\(a_i'a_i=\sum_{p=1}^ja_{jp}^2\)), o que significa que a variância do componente i é igual a sua raiz característica.

Finalmente, dado que \(a_i'a_k =0\), a covariância entre os CP’s é igual a zero, ou seja, não são correlacionados, são ortogonais.

Como dito anteriormente, com p variáveis é possível ter até p CP’s. Assim, a variância total dos p componentes tem que ser igual a variância total das variáveis Z.

A importância relativa de cada componente é dada pelo percentual de sua variância em relação à variância total, ou seja, é a variância explicada ou captada por ele. Assim, a importância relativa de \(Z_k\) é dada por \(( \lambda_k / \sum_{i}^{p} \lambda_i)100\). Se um, dois ou três componentes captam grande parcela da variância dos dados, pode-se concentrar a análise neste número menor de variáveis.

Como a idéia da ACP é redução da massa de dados para uma dimensão mais adequada para análise, se faz necessário decidir quantos CP’s usar. Com p variáveis deve-se manter k componentes, sendo \(k<q\). A determinação de k não é uma decisão estatística porque não se tem um modelo adequado para tal e por isso é feita de forma prática. Utiliza-se os seguintes critérios:

  1. Dada a importância relativa de cada componente, manter o número de componentes que captam “certa” percentagem da variância dos dados, com \(70\%\) sendo um valor de referência;

  2. Desconsiderar os componentes com variância inferior à variância média das variáveis originais.


2.1.2 Interpretação dos Coeficientes do Componente Principal


Os coeficientes dos componentes indicam a importância da variável para o componente. Isto possibilita atribuir um significado ao componente. Além do coeficiente pode-se calcular a correlação entre o componente e a variável. A correlação entre \(Y_j\) e a variável padronizada \(Z_i\) é igual a:

\[ r_{Y_i,Z_k}=\frac{a_{ik}}{\sqrt{\sigma_k^2}}\sqrt{\lambda_i} \] e, então, as variáveis \(\mathbf{Z}\) com os maiores coeficientes na componente principal \(\mathbf{Y_j}\) são as mais correlacionadas com a componente. A matriz de correlações entre as variáveis e os componentes é bastante importante para entender os componentes e lhes atribuir um nome. É possível também testar a significância estatística de cada peso ou coeficiente do componente. A hipótese nula é de que o coeficiente é estatisticamente igual a zero.


2.1.3 Análise de Componentes Principais - Escores


Escore é o valor de \(\mathbf{Y_i}\) para cada observação. Estes servem para, por exemplo:

  1. comparar ou ordenar as observações;
  2. Análise de cluster ou regressão.


2.1.4 Demonstração de ACP no R


#Direcionado o R para o Diretorio a ser trabalhado
#setwd('/Users/jricardofl/Dropbox/tempecon/multivariada')

#Lendo os dados no R
library(car)
library(tidyverse)
library(corrplot)
library(graphics)
library(ade4)
library(grid)
library(MVar.pt)
library(factoextra)

data(mtcars)

#Format
#A data frame with 32 observations on 11 (numeric) variables.

#[, 1] mpg Milhas/(EUA) galão
#[, 2] cil Número de cilindros
#[, 3] disp Cilindradas cc
#[, 4] HP Potência bruta
#[, 5] drat Relação do eixo traseiro
#[, 6] Peso em peso (1000 lbs)
#[, 7] qsex tempo 1/4 de milha
#[, 8] vs Motor (0 = em forma de V, 1 = reto)
#[, 9] am Transmissão (0 = automática, 1 = manual)
#[,10] gear Número de marchas para frente
#[,11] carb Número de carburadores

# Criando um objeto
dados <- mtcars
summary(dados) # estatística descritiva dos dados
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
# Retirando as variáveis binárias
dados <- mtcars %>% select(-vs, -am)

# Verificação da estrutura dos dados
str(dados)
## 'data.frame':    32 obs. of  9 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
head(dados)
##                    mpg cyl disp  hp drat    wt  qsec gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22    3    1
tail(dados)
##                 mpg cyl  disp  hp drat    wt qsec gear carb
## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7    5    2
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9    5    2
## Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5    5    4
## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5    5    6
## Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6    5    8
## Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.6    4    2
# ESTIMACAO DAS ESTATISTICAS DESCRITIVAS E CALCULO DA MATRIZ DE CORRELAÇOES
summary(dados) #sem as variáveis binárias
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec            gear      
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :3.000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:3.000  
##  Median :3.695   Median :3.325   Median :17.71   Median :4.000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :3.688  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:4.000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :5.000  
##       carb      
##  Min.   :1.000  
##  1st Qu.:2.000  
##  Median :2.000  
##  Mean   :2.812  
##  3rd Qu.:4.000  
##  Max.   :8.000
desvpad <- sapply(dados, sd) #para calcular o desvio-padrao
round(desvpad,2)
##    mpg    cyl   disp     hp   drat     wt   qsec   gear   carb 
##   6.03   1.79 123.94  68.56   0.53   0.98   1.79   0.74   1.62
cov(dados) #covariância
##              mpg         cyl        disp          hp         drat          wt
## mpg    36.324103  -9.1723790  -633.09721 -320.732056   2.19506351  -5.1166847
## cyl    -9.172379   3.1895161   199.66028  101.931452  -0.66836694   1.3673710
## disp -633.097208 199.6602823 15360.79983 6721.158669 -47.06401915 107.6842040
## hp   -320.732056 101.9314516  6721.15867 4700.866935 -16.45110887  44.1926613
## drat    2.195064  -0.6683669   -47.06402  -16.451109   0.28588135  -0.3727207
## wt     -5.116685   1.3673710   107.68420   44.192661  -0.37272073   0.9573790
## qsec    4.509149  -1.8868548   -96.05168  -86.770081   0.08714073  -0.3054816
## gear    2.135685  -0.6491935   -50.80262   -6.358871   0.27598790  -0.4210806
## carb   -5.363105   1.5201613    79.06875   83.036290  -0.07840726   0.6757903
##              qsec        gear        carb
## mpg    4.50914919   2.1356855 -5.36310484
## cyl   -1.88685484  -0.6491935  1.52016129
## disp -96.05168145 -50.8026210 79.06875000
## hp   -86.77008065  -6.3588710 83.03629032
## drat   0.08714073   0.2759879 -0.07840726
## wt    -0.30548161  -0.4210806  0.67579032
## qsec   3.19316613  -0.2804032 -1.89411290
## gear  -0.28040323   0.5443548  0.32661290
## carb  -1.89411290   0.3266129  2.60887097
# Matriz de Correlacoes
matcor <- cor(dados)
print(matcor, digits=4)
##          mpg     cyl    disp      hp     drat      wt    qsec    gear     carb
## mpg   1.0000 -0.8522 -0.8476 -0.7762  0.68117 -0.8677  0.4187  0.4803 -0.55093
## cyl  -0.8522  1.0000  0.9020  0.8324 -0.69994  0.7825 -0.5912 -0.4927  0.52699
## disp -0.8476  0.9020  1.0000  0.7909 -0.71021  0.8880 -0.4337 -0.5556  0.39498
## hp   -0.7762  0.8324  0.7909  1.0000 -0.44876  0.6587 -0.7082 -0.1257  0.74981
## drat  0.6812 -0.6999 -0.7102 -0.4488  1.00000 -0.7124  0.0912  0.6996 -0.09079
## wt   -0.8677  0.7825  0.8880  0.6587 -0.71244  1.0000 -0.1747 -0.5833  0.42761
## qsec  0.4187 -0.5912 -0.4337 -0.7082  0.09120 -0.1747  1.0000 -0.2127 -0.65625
## gear  0.4803 -0.4927 -0.5556 -0.1257  0.69961 -0.5833 -0.2127  1.0000  0.27407
## carb -0.5509  0.5270  0.3950  0.7498 -0.09079  0.4276 -0.6562  0.2741  1.00000
corrplot(cor(dados), order="hclust", tl.col="black", tl.cex = .75)

#Análise de componentes principais - dados devem ser padronizados
#Padronizacao dos dados
dados.pad <-as.data.frame(scale(dados))

#Analise de Componentes principais com prcomp
resultados.pca <- prcomp(dados.pad, scale = TRUE) #ACP

#Raizes Caracteristicas - 1 Forma
(resultados.pca$sdev)^2
## [1] 5.65593947 2.08210029 0.50421482 0.26502753 0.18315864 0.12379319 0.10506192
## [8] 0.05851375 0.02219038
summary(resultados.pca)
## Importance of components:
##                           PC1    PC2     PC3     PC4     PC5     PC6     PC7
## Standard deviation     2.3782 1.4429 0.71008 0.51481 0.42797 0.35184 0.32413
## Proportion of Variance 0.6284 0.2313 0.05602 0.02945 0.02035 0.01375 0.01167
## Cumulative Proportion  0.6284 0.8598 0.91581 0.94525 0.96560 0.97936 0.99103
##                           PC8     PC9
## Standard deviation     0.2419 0.14896
## Proportion of Variance 0.0065 0.00247
## Cumulative Proportion  0.9975 1.00000
sum((resultados.pca$sdev)^2) #traco da matriz
## [1] 9
#É possivel escolher o número de CP com base no Autovalor >1
(resultados.pca$sdev^2)
## [1] 5.65593947 2.08210029 0.50421482 0.26502753 0.18315864 0.12379319 0.10506192
## [8] 0.05851375 0.02219038
# Gráfico do percentual de variância explicada
screeplot(resultados.pca, type="lines")

fviz_eig(resultados.pca)


Se observa que 62,84% da variabilidade total dos dados são explicados pela primeira componente principal. Além disso, a segunda componente principal explica 23,13% da variação total. As duas primeiras componentes principais explicam juntas 85,98% da variabilidade total dos dados.


#Resultados das combinações lineares
resultados.pca
## Standard deviations (1, .., p=9):
## [1] 2.3782219 1.4429485 0.7100809 0.5148082 0.4279704 0.3518426 0.3241326
## [8] 0.2418962 0.1489644
## 
## Rotation (n x k) = (9 x 9):
##             PC1         PC2         PC3          PC4        PC5         PC6
## mpg  -0.3931477  0.02753861 -0.22119309 -0.006126378 -0.3207620  0.72015586
## cyl   0.4025537  0.01570975 -0.25231615  0.040700251  0.1171397  0.22432550
## disp  0.3973528 -0.08888469 -0.07825139  0.339493732 -0.4867849 -0.01967516
## hp    0.3670814  0.26941371 -0.01721159  0.068300993 -0.2947317  0.35394225
## drat -0.3118165  0.34165268  0.14995507  0.845658485  0.1619259 -0.01536794
## wt    0.3734771 -0.17194306  0.45373418  0.191260029 -0.1874822 -0.08377237
## qsec -0.2243508 -0.48404435  0.62812782 -0.030329127 -0.1482495  0.25752940
## gear -0.2094749  0.55078264  0.20658376 -0.282381831 -0.5624860 -0.32298239
## carb  0.2445807  0.48431310  0.46412069 -0.214492216  0.3997820  0.35706914
##              PC7         PC8         PC9
## mpg  -0.38138068 -0.12465987  0.11492862
## cyl  -0.15893251  0.81032177  0.16266295
## disp -0.18233095 -0.06416707 -0.66190812
## hp    0.69620751 -0.16573993  0.25177306
## drat  0.04767957  0.13505066  0.03809096
## wt   -0.42777608 -0.19839375  0.56918844
## qsec  0.27622581  0.35613350 -0.16873731
## gear -0.08555707  0.31636479  0.04719694
## carb -0.20604210 -0.10832772 -0.32045892
#Escores para cada observação
resultados.pca$x # valores das componentes principais
##                             PC1        PC2         PC3         PC4         PC5
## Mazda RX4           -0.66422351  1.1734476 -0.20431724 -0.12601751  0.75200784
## Mazda RX4 Wag       -0.63719807  0.9769448  0.11077779 -0.08567709  0.65668822
## Datsun 710          -2.29973601 -0.3265893 -0.21014955 -0.10862524 -0.07622329
## Hornet 4 Drive      -0.21529670 -1.9768101 -0.32946822 -0.30806225 -0.24391787
## Hornet Sportabout    1.58697405 -0.8287285 -1.03299254  0.14738418 -0.22270405
## Valiant              0.04960512 -2.4466838  0.11177774 -0.87154914 -0.12574876
## Duster 360           2.71439677  0.3610529 -0.65206041  0.09633337  0.29674234
## Merc 240D           -2.04370658 -0.8006412  0.84898795 -0.27451338 -0.26307848
## Merc 230            -2.29506729 -1.3056004  1.96848450  0.05055875 -0.45988113
## Merc 280            -0.38252133  0.5811211  0.88632274  0.07026946  0.45835852
## Merc 280C           -0.36652708  0.4121971  1.14860950  0.06150898  0.48309076
## Merc 450SE           1.88466875 -0.7241198 -0.20604588 -0.21856675  0.27996207
## Merc 450SL           1.67107231 -0.7144354 -0.32644071 -0.28933625  0.28061777
## Merc 450SLC          1.77692371 -0.8411687 -0.08557921 -0.28421711  0.34961695
## Cadillac Fleetwood   3.64958983 -0.9480878  0.88315862  0.21645793 -0.34788247
## Lincoln Continental  3.71033756 -0.8426945  0.93230325  0.34099021 -0.34260485
## Chrysler Imperial    3.33196300 -0.4805609  0.67061959  0.65189724 -0.43940743
## Fiat 128            -3.45236266 -0.4327074 -0.22604214  0.10018032 -0.33470301
## Honda Civic         -3.85477722  0.7084152 -0.22670973  1.19340342  0.53954318
## Toyota Corolla      -3.85488283 -0.3872111 -0.25488964  0.21962306 -0.30372397
## Toyota Corona       -1.90375523 -1.5725638  0.06620424  0.07989679  0.50126570
## Dodge Challenger     1.80402354 -1.1340965 -1.00776416 -0.58796239  0.09903732
## AMC Javelin          1.46483534 -0.9777629 -0.76680342 -0.03308788  0.26871378
## Camaro Z28           2.60135738  0.7649595 -0.48915140  0.95247550  0.53065965
## Pontiac Firebird     1.87424485 -0.9791561 -0.89787633  0.22438738 -0.50770999
## Fiat X1-9           -3.14830645 -0.2552569 -0.36230545  0.06406082  0.03361267
## Porsche 914-2       -2.77939557  1.6373369 -0.35969974  0.31886540 -0.43251030
## Lotus Europa        -2.90895427  1.3962368 -0.91635036 -0.90254314 -0.75861156
## Ford Pantera L       1.54812696  3.0206982 -0.51945216  0.86560850 -0.86048411
## Ferrari Dino         0.08049995  2.8346567  0.34481747 -1.14659658  0.29944552
## Maserati Bora        2.96252801  3.9993896  0.70296512 -0.73000448 -0.22756074
## Volvo 142E          -1.90443632  0.1084190  0.39906976  0.31285789  0.11738974
##                             PC6         PC7          PC8          PC9
## Mazda RX4           -0.12506777 -0.42357334 -0.003259165 -0.167051112
## Mazda RX4 Wag       -0.06619437 -0.44849307  0.056643244 -0.071592094
## Datsun 710          -0.56693648  0.38612406 -0.202035744  0.114505030
## Hornet 4 Drive       0.08382435  0.03299362 -0.023714111 -0.145255757
## Hornet Sportabout    0.18280435 -0.05793795  0.152342587 -0.154646072
## Valiant             -0.23043022  0.22451528  0.098663134 -0.004233901
## Duster 360           0.27763557  0.44227307 -0.306373481 -0.186980810
## Merc 240D           -0.19042527 -0.39416400 -0.187088365 -0.010461330
## Merc 230             0.20443847  0.53713423  0.413455512 -0.169005773
## Merc 280            -0.07984989 -0.26113412  0.204105964  0.110461785
## Merc 280C           -0.16066456 -0.07979514  0.352641772  0.027108266
## Merc 450SE           0.17135058 -0.08914480  0.092140434  0.396034809
## Merc 450SL           0.33682412  0.03346598  0.182323579  0.196526577
## Merc 450SLC          0.13926264  0.20632469  0.295340402  0.147796262
## Cadillac Fleetwood  -0.24002207 -0.31053111 -0.171865268 -0.251117818
## Lincoln Continental -0.22646211 -0.28589695 -0.239313268 -0.028994385
## Chrysler Imperial    0.31045750 -0.38304409 -0.359765688  0.223097923
## Fiat 128             0.57303421 -0.24650594 -0.066340528  0.220271421
## Honda Civic          0.37207104 -0.20055288  0.087333576 -0.241702175
## Toyota Corolla       0.83750899 -0.10186868  0.104053562  0.042833437
## Toyota Corona       -0.07212137  0.74680802 -0.408144457 -0.082722856
## Dodge Challenger    -0.33920894 -0.14045443  0.156086022 -0.050247532
## AMC Javelin         -0.31479492  0.03753417  0.370979414 -0.043466032
## Camaro Z28           0.05970074  0.38212238 -0.289612990  0.082069840
## Pontiac Firebird     0.20785973 -0.32709161  0.027471038 -0.130958896
## Fiat X1-9           -0.09586730  0.10352270 -0.020876499  0.021084764
## Porsche 914-2       -0.69006515 -0.26313120 -0.105695694  0.085027267
## Lotus Europa         0.05473409 -0.03491081 -0.236552376 -0.046341050
## Ford Pantera L      -0.50704173  0.37940892  0.548070377  0.053196712
## Ferrari Dino        -0.08124583 -0.26924964 -0.123537656 -0.047915313
## Maserati Bora        0.65580986  0.49422807 -0.082329298 -0.053112079
## Volvo 142E          -0.48091826  0.31102454 -0.315146031  0.165790892
#Correlaçoes entre as variaveis e os escores
cor(dados, resultados.pca$x)
##             PC1         PC2         PC3         PC4         PC5          PC6
## mpg  -0.9349924  0.03973679 -0.15706498 -0.00315391 -0.13727663  0.253381487
## cyl   0.9573620  0.02266837 -0.17916487  0.02095282  0.05013231  0.078927259
## disp  0.9449932 -0.12825603 -0.05556481  0.17477417 -0.20832951 -0.006922559
## hp    0.8730011  0.38875010 -0.01222162  0.03516191 -0.12613645  0.124531951
## drat -0.7415688  0.49298721  0.10648022  0.43535196  0.06929950 -0.005407096
## wt    0.8882114 -0.24810498  0.32218796  0.09846224 -0.08023684 -0.029474687
## qsec -0.5335561 -0.69845105  0.44602154 -0.01561368 -0.06344640  0.090609806
## gear -0.4981777  0.79475097  0.14669117 -0.14537249 -0.24072736 -0.113638954
## carb  0.5816671  0.69883885  0.32956322 -0.11042236  0.17109485  0.125632122
##              PC7         PC8          PC9
## mpg  -0.12361790 -0.03015474  0.017120269
## cyl  -0.05151520  0.19601372  0.024230983
## disp -0.05909940 -0.01552177 -0.098600723
## hp    0.22566353 -0.04009185  0.037505214
## drat  0.01545450  0.03266824  0.005674196
## wt   -0.13865616 -0.04799069  0.084788796
## qsec  0.08953378  0.08614732 -0.025135847
## gear -0.02773183  0.07652743  0.007030663
## carb -0.06678495 -0.02620406 -0.047736960


2.1.5 Análise Gráfica da ACP


fviz_pca_ind(resultados.pca,
             col.ind = "cos2", 
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, 
             legend.title = "Representation")

fviz_pca_var(resultados.pca, 
             col.var = "contrib", 
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, 
             legend.title = "Contribution")

fviz_pca_biplot(resultados.pca, 
                repel = TRUE, 
                col.var = "#2E9FDF", 
                col.ind = "#696969")

dados <- mtcars %>% mutate(
  am = case_when(am == 0 ~ "Automatic", 
                 TRUE ~ "Manual"))

fviz_pca_ind(resultados.pca, 
            col.ind = dados$am, 
             palette = c("#00AFBB", "#FC4E07"), 
             addEllipses = TRUE, 
             legend.title = "Engine shape", 
             repel = TRUE)

fviz_pca_biplot(resultados.pca, 
                repel = TRUE, 
                col.var = "black", 
                col.ind = as.factor(dados$am), 
                addEllipses = TRUE, 
                legend.title = "Transmissão")


2.2 Análise Fatorial


Análise Fatorial é uma técnica estatística para redução de dados. Ela reduz o número de variáveis (p) na análise, descrevendo combinações lineares destas (fatores) que contém a maior parte das informações das variáveis originais e que possam ter interpretações significativas. Estes fatores não são correlacionados entre si.

O “fator” é uma variável latente (não observada) que representa uma característica marcante dos dados. O objetivo da Análise Fatorial é identificar os r<p fatores e relacioná-los com as variáveis originais.

Segundo Mingoti (2005, p. 99), “a análise fatorial tem como objetivo principal descrever a variabilidade original do vetor de variáveis X, em termos de um número menor r de variáveis aleatórias, chamadas de fatores comuns e que estão relacionadas com o vetor original X através de um modelo linear. Neste modelo, parte da variabilidade de X é atribuída aos fatores comuns, sendo o restante da variabilidade de X atribuído às variáveis que não foram incluídas no modelo, ou seja, ao erro aleatório”.

Existem dois enfoques diferentes para Análise Fatorial: A Análise Fatorial Exploratória e a Análise Fatorial Confirmatória. A Análise Fatorial Exploratória objetiva determinar dimensões latentes dos dados denominadas fatores partindo-se de um conjunto de variáveis e a solução conduz a uma relação de todas as variáveis com todos os fatores. Na Análise Fatorial Confirmatória parte-se de um conjunto de variáveis e de um conjunto de hipóteses sobre o número de fatores e sobre quais variáveis se relacionam com quais fatores. O objetivo da análise é “confirmar” se as variáveis formam os fatores da forma como foi assumido. A formulação do modelo é baseada em uma teoria que será testada com a análise. O modelo especifica quais variáveis são relacionadas com quais fatores e se os fatores são correlacionados. A definição dos fatores é feita antes do ajustamento do modelo.

Seja \(\mathbf{x}\) um vetor aleatório \(p_x1\) com média \(\mathbf{\mu}\) e matriz de variância-covariância dada por \(\mathbf{\Sigma}\). A variância total de cada variável pode ser separada em três parcelas: fatores comuns (influenciam duas ou mais variáveis), fatores específicos (contribuem para a variação de uma única variável) e um erro.

Assim, a variação total vai ser a soma da variação comum (comunalidade), da variação específica (unicidade) e do erro.

\[ \mathbf{x}=\mathbf{\Lambda} \mathbf{f}+ \mathbf{\epsilon} \]

onde \(\mathbf{f}\) é um vetor aleatório de ordem \(k_x1\)(\(k<p\)), com os elementos \(f_1, \dots, f_k\) sendo denominados fatores comuns (comunalidade); \(\Lambda\) é uma matriz de constantes desconhecidas \(p_xk\) chamadas de cargas fatoriais (ou coeficientes de correlação entre as variáveis e os fatores quando as variáveis são padronizadas); e os elementos \(\epsilon_1, \dots, \epsilon_p\) do \(p_x1\) vetor aleatório \(\mathbf{\epsilon}\) são chamados de fatores específicos (unicidade) e erro. Assume-se que \(\mathbf{f}\) e \(\mathbf{\epsilon}\) não são correlacionados.

\[\begin{cases} X_1=a_{11}F_1+a_{12}F_2+a_{13}F_3+ \dots +a_{1r}F_r+\epsilon_1 \\ X_2=a_{21}F_1+a_{22}F_2+a_{23}F_3+ \dots +a_{2r}F_r+\epsilon_2 \\ X_3=a_{31}F_1+a_{32}F_2+a_{33}F_3+ \dots +a_{3r}F_r+\epsilon_3 \\ . \\ . \\ . \\ X_p=a_{p1}F_1+a_{p2}F_2+a_{p3}F_3+ \dots +a_{pr}F_r+\epsilon_p \\ \end{cases}\]

O modelo tem como objetivo explicar o comportamento das p variáveis em função de r<p fatores comuns (desconhecidos) e de um termo de erro composto de unicidade (fatores específicos) e erro aleatório. O processo de estimação consiste em determinar a matriz de cargas fatoriais \(\mathbf{\Lambda}\).


2.2.1 Pressupostos do Modelo de Análise Fatorial


Os pressupostos do Modelo de Análise Fatorial podem ser resumidos em:

  1. \(\mathbf{f} \sim (\mathbf{0},\mathbf{I})\), ou seja, os fatores possuem média zero e variância constante igual a um e não são autocorrelacionados;

  2. \(\epsilon \sim (\mathbf{0},\mathbf{\Psi})\), em que \(\mathbf{\Psi}=diag(\psi_1,\dots,\psi_p)\), ou seja, os erros tem média zero e podem ter variâncias diferentes, mas não correlacionadas;

  3. \(\mathbf{f}\) e \(\mathbf{\epsilon}\) são independentes, ou seja, os fatores comuns são independentes dos fatores específicos e erros.

A Análise Fatorial pode ser feita com a matriz de variâncias e covariâncias ou com a matriz de correlações. Como normalmente é recomendado o uso de variáveis padronizadas para contornar o problema de unidades de medidas diferentes e a influência que uma variável com variância grande pode ter na determinação das cargas fatoriais, a Análise Fatorial é, quase sempre, feita com a matriz de correlações \(\mathbf{\Sigma}\) .

No modelo fatorial, a matriz \(\mathbf{\Sigma}\) é decomposta como

\[ \mathbf{\Sigma}=E(xx') \]

\[ \mathbf{\Sigma}=E[(\mathbf{\Lambda} \mathbf{f}+ \mathbf{\epsilon})(\mathbf{\Lambda} \mathbf{f}+ \mathbf{\epsilon})'] \]

sendo que é possível demonstrar que o resultado desta decomposição é

\[ \mathbf{\Sigma}=\mathbf{\Lambda}\mathbf{\Phi}\mathbf{\Lambda}'+\mathbf{\Psi} \] Este resultado, que é derivado com base nas pressuposições do modelo, diz que a matriz de correlações pode ser decomposta em duas parcelas, uma relacionada com a comunalidade e outra com a unicidade. O modelo assume que os fatores não são correlacionados \(\mathbf{\Phi}=\mathbf{I}\).

Um termo importante na Análise Fatorial é a comunalidade, ou seja, o somatório das correlações dos fatores com a variável “i”.

\[ \mathbf{h_i^2}=a_{i1}^2+a_{i2}^2+\dots+a_{ir}^2 \]

A Unicidade (\(\mathbf{\Psi}\)) é dada por \(\mathbf{\Psi}=1-\mathbf{h_i^2}\).

A comunalidade é a parcela da variância de X explicada pelos r fatores e a unicidade é a parcela não explicada.


2.2.2 Estimação das Cargas Fatoriais


Dado o modelo

\[ \mathbf{x}=\mathbf{\Lambda} \mathbf{f}+ \mathbf{\epsilon} \] pode-se entender o x como a variável dependente e o f como as variáveis explicativas, \(\Lambda\) como como os coefientes e \(\epsilon\) como os erros de um modelo de regressão múltipla.

O problema, então, é estimar \(\mathbf{\Lambda}\) e \(\mathbf{\Psi}\) que reproduzam \(\mathbf{\Sigma}\) com um número de fatores r menor que o número de variáveis originais p, mas apenas o x é conhecido.

Existem diversas formas de estimar as cargas fatoriais sendo que componentes principais e máxima verossimilhança são as principais. As explicações mais detalhadas podem ser encontradas em Mingoti (2005).

O método dos Componentes Principais é o mais usado e tem como base o uso das raízes características e vetores característicos relacionados com r<p componentes para estimar \(\Lambda\). O método de Máxima Verossimilhança maximiza uma função de verossimilhança formada com a pressuposição de que o vetor de variáveis aleatórias X segue distribuição normal p-variada com vetor de médias \(\mu\) e matriz de variâncias e covariâncias \(\mathbf{\Sigma}\).

O método dos componentes principais parte da decomposição espectral da matriz de variâncias e covariâncias \(\mathbf{\Sigma}\). Assim, é necessário informar que a decomposição espectral de uma matriz é uma operação que relaciona a matriz com seus autovalores e seus autovetores.

Considere A uma matriz \(p_xp\) simétrica com raízes características \(\lambda_p\) e vetores característicos \(x_p\). A decomposição espectral de A é dada por

\[ A=\sum \lambda_i x_i x_i' \] com i variando de 1 a p. A decomposição pode ser representada por \(A=P \Lambda P'\) em que P é uma matriz cujas colunas são os vetores característicos normalizados de A e \(\Lambda\) é uma matriz diagonal com as raízes características de A na diagonal principal. Dessa relação tem-se, também, que \(\Lambda=PAP'\) que é uma operação denominada diagonalização de A.

Pelo teorema da decomposição espectral, a matriz de correlação amostral ou a matriz de variâncias e covariâncias pode ser decomposta como a soma de p matrizes, cada uma relacionada com um autovetor da matriz \(\mathbf{\Sigma}\).

\[ \Sigma=P \Lambda P'=\sum \lambda_i x_i x_i' \] com i variando de 1 a p. Com p componentes, a matriz \(\mathbf{\Sigma}\) é totalmente reproduzida. Para r < p, pode-se escrever

\[ \Sigma=P \Lambda P'=\sum_{j=1}^r \lambda_j x_j x_j' + \sum_{j=r+1}^p \lambda_j x_j x_j' \]

Cada parcela desta soma envolve uma matriz de dimensão \(p_xp\) correspondente a informação da j-ésima componente fazendo com que a variabilidade das variáveis seja representada pela soma da variabilidade relacionada com cada componente. Assim, pode-se escrever

\[ \Sigma=\sum_{j=1}^r \lambda_j x_j x_j' + \sum_{j=r+1}^p \lambda_j x_j x_j'=P_1 \Lambda_1 P_1'+P_2 \Lambda_2 P_2' \] e pode-se considerar uma aproximação da matriz de correlações \(\mathbf{\Sigma}\) dada por

\[ \mathbf{\Sigma} \approx P_1 \Lambda_1 P_1'=\sum_{j=1}^r \lambda_j x_j x_j' \] o que possibilita estimar as matrizes \(\Lambda\) e \(\Psi\) por meio de raízes e vetores característicos de \(\mathbf{\Sigma}\).

Pela decomposição espectral ainda é possível escrever

\[ \mathbf{\Sigma} \approx P_1 \Lambda_1^{1/2} \Lambda_1^{1/2}P_1' \] e definir por \(A=P_1 \Lambda_1^{1/2}\) e por \(A'=\Lambda_1^{1/2}P_1'\)

Esta aproximação de \(\mathbf{\Sigma}\) considera que os fatores específicos são de menor importância. Incluindo os fatores específicos a aproximação de \(\mathbf{\Sigma}\) fica

\[ \mathbf{\Sigma} \approx AA' + \Psi \] e a matriz \(\Psi\), que é diagonal, pode ser estimada por

\[ \Psi = diag(R-AA') \]

A matriz de resíduos resultante do ajustamento do modelo é definida por

\[ RES= \mathbf{\Sigma} - (AA'+\Psi) \]

que serve como critério de avaliação do modelo. Valores pequenos, próximos de zero, indicam bom ajustamento. Esta matriz só é nula quando todos os “p” fatores são extraídos, o que não é o desejado na prática. Através destes procedimentos os elementos da diagonal da matriz \(\mathbf{\Sigma}\) (variâncias) são exatamente reproduzidos por \(AA'+\Psi\). Entretanto, o mesmo não ocorre para os elementos fora da diagonal principal (correlações).

Todo o conhecimento de Componentes Principais se aplica neste caso com os componentes agora denominados fatores.


2.2.3 Demonstração de Análise Fatorial no R por Componentes Principais


#Direcionado o R para o Diretorio a ser trabalhado
setwd('/Users/jricardofl/Dropbox/tempecon/multivariada')

library(tidyverse)
library(skimr)
library(psych)
library(REdaS)

#Lendo os dados no R
dados <- read.csv2('winequality-red.csv', sep=";", dec=".")
dados <- dados %>% 
  select(-quality) #retira a variável quality

attach(dados)
glimpse(dados)
## Rows: 1,599
## Columns: 11
## $ fixed.acidity        <dbl> 7.4, 7.8, 7.8, 11.2, 7.4, 7.4, 7.9, 7.3, 7.8, 7.5…
## $ volatile.acidity     <dbl> 0.700, 0.880, 0.760, 0.280, 0.700, 0.660, 0.600, …
## $ citric.acid          <dbl> 0.00, 0.00, 0.04, 0.56, 0.00, 0.00, 0.06, 0.00, 0…
## $ residual.sugar       <dbl> 1.9, 2.6, 2.3, 1.9, 1.9, 1.8, 1.6, 1.2, 2.0, 6.1,…
## $ chlorides            <dbl> 0.076, 0.098, 0.092, 0.075, 0.076, 0.075, 0.069, …
## $ free.sulfur.dioxide  <dbl> 11, 25, 15, 17, 11, 13, 15, 15, 9, 17, 15, 17, 16…
## $ total.sulfur.dioxide <dbl> 34, 67, 54, 60, 34, 40, 59, 21, 18, 102, 65, 102,…
## $ density              <dbl> 0.9978, 0.9968, 0.9970, 0.9980, 0.9978, 0.9978, 0…
## $ pH                   <dbl> 3.51, 3.20, 3.26, 3.16, 3.51, 3.51, 3.30, 3.39, 3…
## $ sulphates            <dbl> 0.56, 0.68, 0.65, 0.58, 0.56, 0.56, 0.46, 0.47, 0…
## $ alcohol              <dbl> 9.4, 9.8, 9.8, 9.8, 9.4, 9.4, 9.4, 10.0, 9.5, 10.…
head(dados)
##   fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
## 1           7.4             0.70        0.00            1.9     0.076
## 2           7.8             0.88        0.00            2.6     0.098
## 3           7.8             0.76        0.04            2.3     0.092
## 4          11.2             0.28        0.56            1.9     0.075
## 5           7.4             0.70        0.00            1.9     0.076
## 6           7.4             0.66        0.00            1.8     0.075
##   free.sulfur.dioxide total.sulfur.dioxide density   pH sulphates alcohol
## 1                  11                   34  0.9978 3.51      0.56     9.4
## 2                  25                   67  0.9968 3.20      0.68     9.8
## 3                  15                   54  0.9970 3.26      0.65     9.8
## 4                  17                   60  0.9980 3.16      0.58     9.8
## 5                  11                   34  0.9978 3.51      0.56     9.4
## 6                  13                   40  0.9978 3.51      0.56     9.4
tail(dados)
##      fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
## 1594           6.8            0.620        0.08            1.9     0.068
## 1595           6.2            0.600        0.08            2.0     0.090
## 1596           5.9            0.550        0.10            2.2     0.062
## 1597           6.3            0.510        0.13            2.3     0.076
## 1598           5.9            0.645        0.12            2.0     0.075
## 1599           6.0            0.310        0.47            3.6     0.067
##      free.sulfur.dioxide total.sulfur.dioxide density   pH sulphates alcohol
## 1594                  28                   38 0.99651 3.42      0.82     9.5
## 1595                  32                   44 0.99490 3.45      0.58    10.5
## 1596                  39                   51 0.99512 3.52      0.76    11.2
## 1597                  29                   40 0.99574 3.42      0.75    11.0
## 1598                  32                   44 0.99547 3.57      0.71    10.2
## 1599                  18                   42 0.99549 3.39      0.66    11.0
# Estatística descritiva das variáveis
summary(dados)
##  fixed.acidity   volatile.acidity  citric.acid    residual.sugar  
##  Min.   : 4.60   Min.   :0.1200   Min.   :0.000   Min.   : 0.900  
##  1st Qu.: 7.10   1st Qu.:0.3900   1st Qu.:0.090   1st Qu.: 1.900  
##  Median : 7.90   Median :0.5200   Median :0.260   Median : 2.200  
##  Mean   : 8.32   Mean   :0.5278   Mean   :0.271   Mean   : 2.539  
##  3rd Qu.: 9.20   3rd Qu.:0.6400   3rd Qu.:0.420   3rd Qu.: 2.600  
##  Max.   :15.90   Max.   :1.5800   Max.   :1.000   Max.   :15.500  
##    chlorides       free.sulfur.dioxide total.sulfur.dioxide    density      
##  Min.   :0.01200   Min.   : 1.00       Min.   :  6.00       Min.   :0.9901  
##  1st Qu.:0.07000   1st Qu.: 7.00       1st Qu.: 22.00       1st Qu.:0.9956  
##  Median :0.07900   Median :14.00       Median : 38.00       Median :0.9968  
##  Mean   :0.08747   Mean   :15.87       Mean   : 46.47       Mean   :0.9967  
##  3rd Qu.:0.09000   3rd Qu.:21.00       3rd Qu.: 62.00       3rd Qu.:0.9978  
##  Max.   :0.61100   Max.   :72.00       Max.   :289.00       Max.   :1.0037  
##        pH          sulphates         alcohol     
##  Min.   :2.740   Min.   :0.3300   Min.   : 8.40  
##  1st Qu.:3.210   1st Qu.:0.5500   1st Qu.: 9.50  
##  Median :3.310   Median :0.6200   Median :10.20  
##  Mean   :3.311   Mean   :0.6581   Mean   :10.42  
##  3rd Qu.:3.400   3rd Qu.:0.7300   3rd Qu.:11.10  
##  Max.   :4.010   Max.   :2.0000   Max.   :14.90
skim(dados)
Data summary
Name dados
Number of rows 1599
Number of columns 11
_______________________
Column type frequency:
numeric 11
________________________
Group variables None

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
fixed.acidity 0 1 8.32 1.74 4.60 7.10 7.90 9.20 15.90 ▂▇▂▁▁
volatile.acidity 0 1 0.53 0.18 0.12 0.39 0.52 0.64 1.58 ▅▇▂▁▁
citric.acid 0 1 0.27 0.19 0.00 0.09 0.26 0.42 1.00 ▇▆▅▁▁
residual.sugar 0 1 2.54 1.41 0.90 1.90 2.20 2.60 15.50 ▇▁▁▁▁
chlorides 0 1 0.09 0.05 0.01 0.07 0.08 0.09 0.61 ▇▁▁▁▁
free.sulfur.dioxide 0 1 15.87 10.46 1.00 7.00 14.00 21.00 72.00 ▇▅▁▁▁
total.sulfur.dioxide 0 1 46.47 32.90 6.00 22.00 38.00 62.00 289.00 ▇▂▁▁▁
density 0 1 1.00 0.00 0.99 1.00 1.00 1.00 1.00 ▁▃▇▂▁
pH 0 1 3.31 0.15 2.74 3.21 3.31 3.40 4.01 ▁▅▇▂▁
sulphates 0 1 0.66 0.17 0.33 0.55 0.62 0.73 2.00 ▇▅▁▁▁
alcohol 0 1 10.42 1.07 8.40 9.50 10.20 11.10 14.90 ▇▇▃▁▁

O banco de dados é composto por 1599 observações e 12 variáveis: acidez fixa, acidez volátil, ácido cítrico, açucar residual, cloretos, dióxido de enxofre livre, dióxido de enxofre total, densidade, Ph, sulfatos, álcool.

library(corrplot)
corrplot(cor(dados), order="hclust", tl.col="black", tl.cex = .75)

#Obtenção do Modelo Fatorial Ortogonal

#Analise Fatorial - dados devem ser padronizados
#Padronizaçao dos dados
dados.pad <-as.data.frame(scale(dados))

s <- cov(dados.pad) #matriz de cov com var pad = mat correlaçoes origem

#Autovalores e Autovetores da Matriz de Covariancias
lambda <-eigen(s)$values
lambda #
##  [1] 3.09913244 1.92590969 1.55054349 1.21323253 0.95929207 0.65960826
##  [7] 0.58379122 0.42295670 0.34464212 0.18133317 0.05955831
evec <-eigen(s)$vectors
evec
##              [,1]         [,2]        [,3]         [,4]        [,5]        [,6]
##  [1,]  0.48931422 -0.110502738 -0.12330157  0.229617370  0.08261366  0.10147858
##  [2,] -0.23858436  0.274930480 -0.44996253 -0.078959783 -0.21873452  0.41144893
##  [3,]  0.46363166 -0.151791356  0.23824707  0.079418256  0.05857268  0.06959338
##  [4,]  0.14610715  0.272080238  0.10128338  0.372792562 -0.73214429  0.04915555
##  [5,]  0.21224658  0.148051555 -0.09261383 -0.666194756 -0.24650090  0.30433857
##  [6,] -0.03615752  0.513566812  0.42879287  0.043537818  0.15915198 -0.01400021
##  [7,]  0.02357485  0.569486959  0.32241450  0.034577115  0.22246456  0.13630755
##  [8,]  0.39535301  0.233575490 -0.33887135  0.174499758 -0.15707671 -0.39115230
##  [9,] -0.43851962  0.006710793  0.05769735  0.003787746 -0.26752977 -0.52211645
## [10,]  0.24292133 -0.037553916  0.27978615 -0.550872362 -0.22596222 -0.38126343
## [11,] -0.11323206 -0.386180959  0.47167322  0.122181088 -0.35068141  0.36164504
##              [,7]        [,8]         [,9]       [,10]        [,11]
##  [1,]  0.35022736  0.17759545 -0.194020908 -0.24952314  0.639691452
##  [2,]  0.53373510  0.07877531  0.129110301  0.36592473  0.002388597
##  [3,] -0.10549701  0.37751558  0.381449669  0.62167708 -0.070910304
##  [4,] -0.29066341 -0.29984469 -0.007522949  0.09287208  0.184029964
##  [5,] -0.37041337  0.35700936 -0.111338666 -0.21767112  0.053065322
##  [6,]  0.11659611  0.20478050 -0.635405218  0.24848326 -0.051420865
##  [7,]  0.09366237 -0.01903597  0.592115893 -0.37075027  0.068701598
##  [8,]  0.17048116  0.23922267 -0.020718675 -0.23999012 -0.567331898
##  [9,]  0.02513762  0.56139075  0.167745886 -0.01096960  0.340710903
## [10,]  0.44746911 -0.37460432  0.058367062  0.11232046  0.069555381
## [11,]  0.32765090  0.21762556 -0.037603106 -0.30301450 -0.314525906
evec[,1:4]
##              [,1]         [,2]        [,3]         [,4]
##  [1,]  0.48931422 -0.110502738 -0.12330157  0.229617370
##  [2,] -0.23858436  0.274930480 -0.44996253 -0.078959783
##  [3,]  0.46363166 -0.151791356  0.23824707  0.079418256
##  [4,]  0.14610715  0.272080238  0.10128338  0.372792562
##  [5,]  0.21224658  0.148051555 -0.09261383 -0.666194756
##  [6,] -0.03615752  0.513566812  0.42879287  0.043537818
##  [7,]  0.02357485  0.569486959  0.32241450  0.034577115
##  [8,]  0.39535301  0.233575490 -0.33887135  0.174499758
##  [9,] -0.43851962  0.006710793  0.05769735  0.003787746
## [10,]  0.24292133 -0.037553916  0.27978615 -0.550872362
## [11,] -0.11323206 -0.386180959  0.47167322  0.122181088
#Matriz de Cargas Fatoriais A modelo completo
A <- sqrt(lambda)*t(evec)
A <- t(A) #Extracao dos Fatores
A[,1:4] #4 primeiros fatores
##              [,1]         [,2]        [,3]         [,4]
##  [1,]  0.86140602 -0.153352549 -0.15353613  0.252916266
##  [2,] -0.42001233  0.381540681 -0.56029703 -0.086971702
##  [3,]  0.81619353 -0.210651715  0.29666720  0.087476695
##  [4,]  0.25721219  0.377585196  0.12611890  0.410619209
##  [5,]  0.37364637  0.205461726 -0.11532350 -0.733792441
##  [6,] -0.06365298  0.712713376  0.53393641  0.047955529
##  [7,]  0.04150200  0.790317762  0.40147319  0.038085598
##  [8,]  0.69599339  0.324149404 -0.42196539  0.192205961
##  [9,] -0.77198543  0.009313047  0.07184521  0.004172083
## [10,]  0.42764729 -0.052116254  0.34839201 -0.606768473
## [11,] -0.19933772 -0.535930923  0.58733137  0.134578602
AAT <- A%*%t(A)
AAT
##              [,1]         [,2]        [,3]         [,4]         [,5]
##  [1,]  1.00000000 -0.256130895  0.67170343  0.114776724  0.093705186
##  [2,] -0.25613089  1.000000000 -0.55249568  0.001917882  0.061297772
##  [3,]  0.67170343 -0.552495685  1.00000000  0.143577162  0.203822914
##  [4,]  0.11477672  0.001917882  0.14357716  1.000000000  0.055609535
##  [5,]  0.09370519  0.061297772  0.20382291  0.055609535  1.000000000
##  [6,] -0.15379419 -0.010503827 -0.06097813  0.187048995  0.005562147
##  [7,] -0.11318144  0.076470005  0.03553302  0.203027882  0.047400468
##  [8,]  0.66804729  0.022026232  0.36494718  0.355283371  0.200632327
##  [9,] -0.68297819  0.234937294 -0.54190414 -0.085652422 -0.265026131
## [10,]  0.18300566 -0.260986685  0.31277004  0.005527121  0.371260481
## [11,] -0.06166827 -0.202288027  0.10990325  0.042075437 -0.221140545
##               [,6]        [,7]        [,8]        [,9]        [,10]       [,11]
##  [1,] -0.153794193 -0.11318144  0.66804729 -0.68297819  0.183005664 -0.06166827
##  [2,] -0.010503827  0.07647000  0.02202623  0.23493729 -0.260986685 -0.20228803
##  [3,] -0.060978129  0.03553302  0.36494718 -0.54190414  0.312770044  0.10990325
##  [4,]  0.187048995  0.20302788  0.35528337 -0.08565242  0.005527121  0.04207544
##  [5,]  0.005562147  0.04740047  0.20063233 -0.26502613  0.371260481 -0.22114054
##  [6,]  1.000000000  0.66766645 -0.02194583  0.07037750  0.051657572 -0.06940835
##  [7,]  0.667666450  1.00000000  0.07126948 -0.06649456  0.042946836 -0.20565394
##  [8,] -0.021945831  0.07126948  1.00000000 -0.34169933  0.148506412 -0.49617977
##  [9,]  0.070377499 -0.06649456 -0.34169933  1.00000000 -0.196647602  0.20563251
## [10,]  0.051657572  0.04294684  0.14850641 -0.19664760  1.000000000  0.09359475
## [11,] -0.069408354 -0.20565394 -0.49617977  0.20563251  0.093594750  1.00000000
#Proporção da variabilidade explicada por cada componente
round(lambda/sum(lambda),4)
##  [1] 0.2817 0.1751 0.1410 0.1103 0.0872 0.0600 0.0531 0.0385 0.0313 0.0165
## [11] 0.0054
#Matriz de Cargas Fatoriais m =4
Am4 <- A[,1:4]
AATm4 <- Am4%*%t(Am4)
AATm4
##             [,1]         [,2]        [,3]        [,4]        [,5]         [,6]
##  [1,]  0.8530773 -0.356282107  0.71195314  0.24814895  0.12247144 -0.233977270
##  [2,] -0.3562821  0.643480495 -0.59701330 -0.07034447  0.04989052 -0.004669574
##  [3,]  0.7119531 -0.597013301  0.80620963  0.20373091  0.16328445 -0.039491036
##  [4,]  0.2481489 -0.070344474  0.20373091  0.39324280 -0.14216804  0.339768628
##  [5,]  0.1224714  0.049890516  0.16328445 -0.14216804  0.73357699  0.025886794
##  [6,] -0.2339773 -0.004669574 -0.03949104  0.33976863  0.02588679  0.799399877
##  [7,] -0.1374553  0.055850417 -0.01017259  0.37535914  0.10364091  0.776815880
##  [8,]  0.6632227  0.051059853  0.39141293  0.32711765  0.23427895 -0.029361784
##  [9,] -0.6763967  0.287179195 -0.61037224 -0.18427342 -0.29788297  0.094337555
## [10,]  0.1694177 -0.341932930  0.41029971 -0.11489421  0.55414529  0.092556300
## [11,] -0.1456638 -0.461539701  0.13621105 -0.12429753 -0.35108098 -0.049225308
##               [,7]        [,8]         [,9]       [,10]       [,11]
##  [1,] -0.137455339  0.66322270 -0.676396717  0.16941773 -0.14566381
##  [2,]  0.055850417  0.05105985  0.287179195 -0.34193293 -0.46153970
##  [3,] -0.010172594  0.39141293 -0.610372244  0.41029971  0.13621105
##  [4,]  0.375359142  0.32711765 -0.184273418 -0.11489421 -0.12429753
##  [5,]  0.103640907  0.23427895 -0.297882965  0.55414529 -0.35108098
##  [6,]  0.776815880 -0.02936178  0.094337555  0.09255630 -0.04922531
##  [7,]  0.788955815  0.12297864  0.004324146  0.09332073 -0.19090534
##  [8,]  0.122978641  0.80447756 -0.563792229  0.01711234 -0.53442613
##  [9,]  0.004324146 -0.56379223  0.601227370 -0.30812402  0.19165309
## [10,]  0.093320730  0.01711234 -0.308124024  0.67514328  0.06564798
## [11,] -0.190905338 -0.53442613  0.191653087  0.06564798  0.69002702
#Matriz PSI - Unicidade
psi <- diag(diag(s-AATm4))
psi
##            [,1]      [,2]      [,3]      [,4]     [,5]      [,6]      [,7]
##  [1,] 0.1469227 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.0000000
##  [2,] 0.0000000 0.3565195 0.0000000 0.0000000 0.000000 0.0000000 0.0000000
##  [3,] 0.0000000 0.0000000 0.1937904 0.0000000 0.000000 0.0000000 0.0000000
##  [4,] 0.0000000 0.0000000 0.0000000 0.6067572 0.000000 0.0000000 0.0000000
##  [5,] 0.0000000 0.0000000 0.0000000 0.0000000 0.266423 0.0000000 0.0000000
##  [6,] 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.2006001 0.0000000
##  [7,] 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.2110442
##  [8,] 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.0000000
##  [9,] 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.0000000
## [10,] 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.0000000
## [11,] 0.0000000 0.0000000 0.0000000 0.0000000 0.000000 0.0000000 0.0000000
##            [,8]      [,9]     [,10]    [,11]
##  [1,] 0.0000000 0.0000000 0.0000000 0.000000
##  [2,] 0.0000000 0.0000000 0.0000000 0.000000
##  [3,] 0.0000000 0.0000000 0.0000000 0.000000
##  [4,] 0.0000000 0.0000000 0.0000000 0.000000
##  [5,] 0.0000000 0.0000000 0.0000000 0.000000
##  [6,] 0.0000000 0.0000000 0.0000000 0.000000
##  [7,] 0.0000000 0.0000000 0.0000000 0.000000
##  [8,] 0.1955224 0.0000000 0.0000000 0.000000
##  [9,] 0.0000000 0.3987726 0.0000000 0.000000
## [10,] 0.0000000 0.0000000 0.3248567 0.000000
## [11,] 0.0000000 0.0000000 0.0000000 0.309973
#Matriz Residual
s-(AATm4+psi)
##                      fixed.acidity volatile.acidity citric.acid residual.sugar
## fixed.acidity          0.000000000      0.100151213 -0.04024971    -0.13337222
## volatile.acidity       0.100151213      0.000000000  0.04451762     0.07226236
## citric.acid           -0.040249708      0.044517616  0.00000000    -0.06015375
## residual.sugar        -0.133372222      0.072262356 -0.06015375     0.00000000
## chlorides             -0.028766250      0.011407257  0.04053846     0.19777757
## free.sulfur.dioxide    0.080183077     -0.005834253 -0.02148709    -0.15271963
## total.sulfur.dioxide   0.024273896      0.020619588  0.04570562    -0.17233126
## density                0.004824587     -0.029033620 -0.02646575     0.02816572
## pH                    -0.006581477     -0.052241900  0.06846810     0.09862100
## sulphates              0.013587936      0.080946245 -0.09752967     0.12042133
## alcohol                0.083995539      0.259251674 -0.02630781     0.16637297
##                        chlorides free.sulfur.dioxide total.sulfur.dioxide
## fixed.acidity        -0.02876625         0.080183077           0.02427390
## volatile.acidity      0.01140726        -0.005834253           0.02061959
## citric.acid           0.04053846        -0.021487093           0.04570562
## residual.sugar        0.19777757        -0.152719633          -0.17233126
## chlorides             0.00000000        -0.020324647          -0.05624044
## free.sulfur.dioxide  -0.02032465         0.000000000          -0.10914943
## total.sulfur.dioxide -0.05624044        -0.109149430           0.00000000
## density              -0.03364662         0.007415953          -0.05170916
## pH                    0.03285683        -0.023960057          -0.07081870
## sulphates            -0.18288481        -0.040898728          -0.05037389
## alcohol               0.12994044        -0.020183045          -0.01474861
##                           density           pH   sulphates     alcohol
## fixed.acidity         0.004824587 -0.006581477  0.01358794  0.08399554
## volatile.acidity     -0.029033620 -0.052241900  0.08094624  0.25925167
## citric.acid          -0.026465753  0.068468099 -0.09752967 -0.02630781
## residual.sugar        0.028165719  0.098620996  0.12042133  0.16637297
## chlorides            -0.033646623  0.032856834 -0.18288481  0.12994044
## free.sulfur.dioxide   0.007415953 -0.023960057 -0.04089873 -0.02018305
## total.sulfur.dioxide -0.051709165 -0.070818705 -0.05037389 -0.01474861
## density               0.000000000  0.222092895  0.13139407  0.03824636
## pH                    0.222092895  0.000000000  0.11147642  0.01397942
## sulphates             0.131394068  0.111476421  0.00000000  0.02794677
## alcohol               0.038246359  0.013979422  0.02794677  0.00000000
#2 Forma de fazer a Analise Fatorial
matcor <- cor(dados)

k <- 4
dados.pca <- prcomp(dados.pad, scale = TRUE) #PCA
carfat <- dados.pca$rotation[, 1:k] %*% diag(dados.pca$sdev[1:k])
colnames(carfat) <- paste("Fator", 1:k, sep = " ")

#Cargas Fatoriais com autovalor maior do que 1
carfat
##                          Fator 1      Fator 2     Fator 3      Fator 4
## fixed.acidity         0.86140602 -0.153352549  0.15353613 -0.252916266
## volatile.acidity     -0.42001233  0.381540681  0.56029703  0.086971702
## citric.acid           0.81619353 -0.210651715 -0.29666720 -0.087476695
## residual.sugar        0.25721219  0.377585196 -0.12611890 -0.410619209
## chlorides             0.37364637  0.205461726  0.11532350  0.733792441
## free.sulfur.dioxide  -0.06365298  0.712713376 -0.53393641 -0.047955529
## total.sulfur.dioxide  0.04150200  0.790317762 -0.40147319 -0.038085598
## density               0.69599339  0.324149404  0.42196539 -0.192205961
## pH                   -0.77198543  0.009313047 -0.07184521 -0.004172083
## sulphates             0.42764729 -0.052116254 -0.34839201  0.606768473
## alcohol              -0.19933772 -0.535930923 -0.58733137 -0.134578602
#Comunalidade e Unicidade
comum <- rowSums(carfat^2)
vespec <- diag(matcor) - comum
estimat <- cbind(comum, vespec, diag(matcor))
rownames(estimat) <- colnames(dados)
colnames(estimat) <- c("Comunalidade", "Unicidade", "Variância")
estimat
##                      Comunalidade Unicidade Variância
## fixed.acidity           0.8530773 0.1469227         1
## volatile.acidity        0.6434805 0.3565195         1
## citric.acid             0.8062096 0.1937904         1
## residual.sugar          0.3932428 0.6067572         1
## chlorides               0.7335770 0.2664230         1
## free.sulfur.dioxide     0.7993999 0.2006001         1
## total.sulfur.dioxide    0.7889558 0.2110442         1
## density                 0.8044776 0.1955224         1
## pH                      0.6012274 0.3987726         1
## sulphates               0.6751433 0.3248567         1
## alcohol                 0.6900270 0.3099730         1
#Matriz de Resíduos
resid <- matcor - (carfat %*% t(carfat) + diag(vespec))
resid
##                      fixed.acidity volatile.acidity citric.acid residual.sugar
## fixed.acidity          0.000000000      0.100151213 -0.04024971    -0.13337222
## volatile.acidity       0.100151213      0.000000000  0.04451762     0.07226236
## citric.acid           -0.040249708      0.044517616  0.00000000    -0.06015375
## residual.sugar        -0.133372222      0.072262356 -0.06015375     0.00000000
## chlorides             -0.028766250      0.011407257  0.04053846     0.19777757
## free.sulfur.dioxide    0.080183077     -0.005834253 -0.02148709    -0.15271963
## total.sulfur.dioxide   0.024273896      0.020619588  0.04570562    -0.17233126
## density                0.004824587     -0.029033620 -0.02646575     0.02816572
## pH                    -0.006581477     -0.052241900  0.06846810     0.09862100
## sulphates              0.013587936      0.080946245 -0.09752967     0.12042133
## alcohol                0.083995539      0.259251674 -0.02630781     0.16637297
##                        chlorides free.sulfur.dioxide total.sulfur.dioxide
## fixed.acidity        -0.02876625        8.018308e-02           0.02427390
## volatile.acidity      0.01140726       -5.834253e-03           0.02061959
## citric.acid           0.04053846       -2.148709e-02           0.04570562
## residual.sugar        0.19777757       -1.527196e-01          -0.17233126
## chlorides             0.00000000       -2.032465e-02          -0.05624044
## free.sulfur.dioxide  -0.02032465        1.110223e-16          -0.10914943
## total.sulfur.dioxide -0.05624044       -1.091494e-01           0.00000000
## density              -0.03364662        7.415953e-03          -0.05170916
## pH                    0.03285683       -2.396006e-02          -0.07081870
## sulphates            -0.18288481       -4.089873e-02          -0.05037389
## alcohol               0.12994044       -2.018305e-02          -0.01474861
##                           density           pH   sulphates     alcohol
## fixed.acidity         0.004824587 -0.006581477  0.01358794  0.08399554
## volatile.acidity     -0.029033620 -0.052241900  0.08094624  0.25925167
## citric.acid          -0.026465753  0.068468099 -0.09752967 -0.02630781
## residual.sugar        0.028165719  0.098620996  0.12042133  0.16637297
## chlorides            -0.033646623  0.032856834 -0.18288481  0.12994044
## free.sulfur.dioxide   0.007415953 -0.023960057 -0.04089873 -0.02018305
## total.sulfur.dioxide -0.051709165 -0.070818705 -0.05037389 -0.01474861
## density               0.000000000  0.222092895  0.13139407  0.03824636
## pH                    0.222092895  0.000000000  0.11147642  0.01397942
## sulphates             0.131394068  0.111476421  0.00000000  0.02794677
## alcohol               0.038246359  0.013979422  0.02794677  0.00000000
# Estimativas das cargas fatoriais das variaveis 

plot(carfat, pch = 20, col = "red", xlab = "Fator 1", ylab = "Fator 2")
text(carfat, rownames(carfat), adj = 1)

Em relação a Análise Fatorial por Máxima Verossimilhança, supondo o vetor de variáveis com distribuição Normal p-variada, tem-se

  1. as variáveis padronizadas serão Z \(\sim\) N(0, \(\Sigma\));

  2. o vetor de fatores será F \(\sim\) N(0,I);

  3. o vetor de erros será \(\epsilon \sim N(0, \Psi)\)

Pelo modelo fatorial \(\mathbf{x}=\mathbf{\Lambda} \mathbf{f}+ \mathbf{\epsilon}\) e \(\mathbf{\Sigma} \approx AA' + \Psi\). Com uma amostra de n observações o objetivo é estimar \(\hat A\) e \(\hat \Psi\). O procedimento consiste em maximizar a função de verossimilhança

\[ L(0, \Sigma)=(2 \pi)^{(\frac{-np}{2})}|AA' + \Psi|^{\frac{-n}{2}}e^{\frac{-1}{2}\sum_{j=1}^n Z_j'(AA'+\Psi)^{-1}Z_j} \] É necessário definir o número de fatores antecipadamente. Uma mudança neste número acarreta mudança nas cargas fatoriais, diferentemente do método de componentes principais. Na Analise Fatorial por Máxima Verossimilhança há equivalência entre decompor \(\Sigma\) ou a matriz de covariâncias \(S\), o que não ocorre na AF via Componentes Principais.


2.2.4 Demonstração de Análise Fatorial no R por Máxima Verossimilhança


# Definição do número de Fatores

eigv <- eigen(cor(dados))
eigv <- data.frame(nfact = 1:ncol(dados), eigval = eigv$values)
ggplot(data = eigv, mapping = aes(nfact, eigval)) +
geom_line() +
geom_point() +
geom_abline(slope = 0, intercept = 1, color = "red") +
labs(x = "Número de fatores",
y = "Autovalor",
title = "Scree plot") +
theme_bw()

#Terceira forma de fazer - factanal()
#Usar as variaveis padronizadas - dados.pad
#Não usa componentes principais, usa max verosimilhança

#Pelo Screeplot, tem-se 4 autovalores acima de 1

fatorial1 <- factanal(dados.pad, factors=4, rotation="none", na.action=na.omit)

fatorial1
## 
## Call:
## factanal(x = dados.pad, factors = 4, na.action = na.omit, rotation = "none")
## 
## Uniquenesses:
##        fixed.acidity     volatile.acidity          citric.acid 
##                0.101                0.789                0.401 
##       residual.sugar            chlorides  free.sulfur.dioxide 
##                0.701                0.921                0.454 
## total.sulfur.dioxide              density                   pH 
##                0.171                0.005                0.271 
##            sulphates              alcohol 
##                0.905                0.005 
## 
## Loadings:
##                      Factor1 Factor2 Factor3 Factor4
## fixed.acidity         0.438  -0.521   0.628   0.203 
## volatile.acidity      0.123   0.328  -0.202  -0.218 
## citric.acid           0.162  -0.430   0.499   0.373 
## residual.sugar        0.185   0.325   0.379   0.125 
## chlorides             0.245                         
## free.sulfur.dioxide           0.451  -0.104   0.575 
## total.sulfur.dioxide  0.160   0.467  -0.148   0.750 
## density               0.871           0.486         
## pH                   -0.329   0.632  -0.168  -0.439 
## sulphates                             0.245   0.167 
## alcohol              -0.856           0.512         
## 
##                Factor1 Factor2 Factor3 Factor4
## SS loadings      1.954   1.506   1.448   1.369
## Proportion Var   0.178   0.137   0.132   0.124
## Cumulative Var   0.178   0.315   0.446   0.571
## 
## Test of the hypothesis that 4 factors are sufficient.
## The chi square statistic is 1458.43 on 17 degrees of freedom.
## The p-value is 4.32e-300
#fatorial1$loadings
load = fatorial1$loadings[,c(1,2)]
plot(load, type="n")
text(load, labels=names(dados.pad),cex = .7)#visualiza variaveis com fatores

fa.diagram(fatorial1$loadings, digits = 3, main = "Análise Fatorial")

A partir do diagrama com as cargas fatoriais é possível observar que as variáveis cloreto e sulfatos têm pouco peso na composição dos fatores. Assim, pode-se excluir tais variáveis do modelo.

dados2 <- subset(dados, select = -c(sulphates, chlorides))

dados2.pad <- as.data.frame(scale(dados2))

fatorial2<- factanal(dados2.pad, factors=4, rotation="none", na.action=na.omit)

fatorial2
## 
## Call:
## factanal(x = dados2.pad, factors = 4, na.action = na.omit, rotation = "none")
## 
## Uniquenesses:
##        fixed.acidity     volatile.acidity          citric.acid 
##                0.077                0.804                0.423 
##       residual.sugar  free.sulfur.dioxide total.sulfur.dioxide 
##                0.699                0.486                0.114 
##              density                   pH              alcohol 
##                0.005                0.295                0.005 
## 
## Loadings:
##                      Factor1 Factor2 Factor3 Factor4
## fixed.acidity         0.442  -0.320   0.634   0.472 
## volatile.acidity      0.121   0.156  -0.205  -0.339 
## citric.acid           0.164  -0.140   0.502   0.527 
## residual.sugar        0.186   0.341   0.374  -0.102 
## free.sulfur.dioxide           0.672  -0.109   0.223 
## total.sulfur.dioxide  0.160   0.831  -0.155   0.381 
## density               0.872           0.482         
## pH                   -0.331   0.274  -0.174  -0.700 
## alcohol              -0.854           0.515         
## 
##                Factor1 Factor2 Factor3 Factor4
## SS loadings      1.898   1.481   1.400   1.313
## Proportion Var   0.211   0.165   0.156   0.146
## Cumulative Var   0.211   0.375   0.531   0.677
## 
## Test of the hypothesis that 4 factors are sufficient.
## The chi square statistic is 734.47 on 6 degrees of freedom.
## The p-value is 2.2e-155


2.2.5 Rotação de Fatores


Sabe-se que vetores característicos não são únicos e, por isso, as cargas fatoriais da Análise Fatorial por Componentes Principais podem ser modificadas sem prejudicar o significado da análise. A rotação consiste em “modificar” as cargas fatoriais, ou seja, calcular nova matriz A. O objetivo é obter uma matriz de cargas fatoriais de mais fácil interpretação, onde cada fator se relaciona mais distintamente com certo grupo de variáveis.

No entanto, nem sempre se tem uma estrutura nítida de relacionamento de variáveis e fatores. Normalmente, todas as variáveis apresentam coeficiente de correlação de certa magnitude com todos os fatores e, muitas vezes, é difícil identificar a relação de forma adequada. A rotação de fatores/eixos é um procedimento matematicamente correto e tem como finalidade facilitar a interpretação dos fatores, isto é, gerar uma nova solução para as cargas fatoriais que mostra uma relação mais nítida entre variáveis e fatores.

A rotação dos fatores consiste na rotação dos eixos coordenados e o cálculo de novos valores de abscissas e ordenadas relacionados com o novo sistema de eixos. Se o ângulo do novo sistema se mantiver em 90º, a rotação é denominada ortogonal e, se mudar o ângulo, a rotação é denominada oblíqua. No primeiro caso os fatores permanecem não correlacionados, mas, no segundo caso, haverá correlação, o que dificulta a interpretação.

Vale ressaltar que a rotação ortogonal modifica as cargas fatoriais, mas não modifica as comunalidades (\(h_i^2\)) e, como observa Mingoti (2005, p. 121), “em termos de qualidade de ajuste, esta nova solução não acrescenta nenhuma melhoria em relação ao ajuste obtido usando a matriz \(\hat A_{p_xm}\), pois a matriz residual original não é alterada pela transformação ortogonal”.

Existem diversos métodos de rotação, tanto ortogonal (Varimax, Quartimax, Orthomax, Equimax) quanto oblíqua (Oblimim, Quartimim, Biquartimim, Covax). Entretanto, o método de rotação mais utilizado é o Varimax, o qual permite que os coeficientes de correlação entre os indicadores e os fatores fiquem o mais próximo possível de zero ou de 1 em valor absoluto, facilitando a interpretação.

O método de Rotação Varimax “forma um novo sistema de eixos ortogonais com o mesmo número de fatores e permite que o grupo de variáveis apareça com maior nitidez, facilitando a interpretação e análise” (ZAMBRANO e LIMA, 2004).

Considere que partindo da já vista matriz de correlaçoes

\[ \mathbf{\Sigma} = AA'+\Psi \] se tenha uma matriz ortogonal T de tal forma que \(TT'=I\). Então, é possível escrever

\[ \mathbf{\Sigma} = ATT'A'+\Psi \]

\[ \mathbf{\Sigma} = AT(AT)'+\Psi \]

se denominar AT por A*, tem-se

\[ \mathbf{\Sigma} = A^{*} A^{* '}+ \Psi \] isto significa que dada uma solução para A, é possível encontrar uma outra solução para \(A^*\), através da escolha da matriz ortogonal T, que seja de mais fácil interpretação do que a solução original.

No critério Varimax, a busca pela matriz T tem como base a tentativa de encontrar fatores com grandes variabilidades nas cargas fatoriais, isto é, encontrar para um fator fixo, um grupo de variáveis X altamente correlacionadas com o fator e um outro grupo de variáveis que tenham correlação desprezível ou moderada com o fator.

Para cada fator fixo, a solução é obtida através da maximização da variação dos quadrados das cargas fatoriais originais das colunas da matriz A. Seja \(\hat a_{ij}^*\) o coeficiente da i-ésima variável no j-ésimo fator após a rotação, e seja V a quantidade definida por

\[ V= \frac{1}{p} \sum_{j=1}^m \Bigg[\sum_{i=1}^p \tilde a_{ij}^4-\frac{1}{p}(\sum_{i=1}^p \tilde a_{ij}^2)^2 \Bigg] \]

onde \(\tilde a_{ij}=(\hat a_{ij}^*/ \hat h_i)\), sendo \(\hat h_i\) a raiz quadrada da comunalidade da variável \(X_i\). A maximização de V corresponde a “puxar” os quadrados das cargas sobre cada fator o máximo possível. O que se espera é encontrar grupos definidos de coeficientes para cada coluna de fator.

A função da rotação de fatores tem a função de procurar cargas fatoriais que mostram um padrão de relacionamento claro e de fácil interpretação entre variáveis e fatores. Deve-se observar que as comunalidades não mudam, o que é uma característica da rotação ortogonal.

#Esimação da AF fazendo a rotação Varimax
fatorial3<- factanal(dados2.pad, factors=4, rotation="varimax", na.action=na.omit)

fatorial3
## 
## Call:
## factanal(x = dados2.pad, factors = 4, na.action = na.omit, rotation = "varimax")
## 
## Uniquenesses:
##        fixed.acidity     volatile.acidity          citric.acid 
##                0.077                0.804                0.423 
##       residual.sugar  free.sulfur.dioxide total.sulfur.dioxide 
##                0.699                0.486                0.114 
##              density                   pH              alcohol 
##                0.005                0.295                0.005 
## 
## Loadings:
##                      Factor1 Factor2 Factor3 Factor4
## fixed.acidity         0.843  -0.191  -0.110   0.404 
## volatile.acidity     -0.395          -0.180         
## citric.acid           0.725                   0.212 
## residual.sugar                0.186           0.510 
## free.sulfur.dioxide           0.709                 
## total.sulfur.dioxide          0.929  -0.113   0.102 
## density               0.329          -0.500   0.794 
## pH                   -0.801           0.244         
## alcohol                               0.991         
## 
##                Factor1 Factor2 Factor3 Factor4
## SS loadings      2.150   1.454   1.362   1.126
## Proportion Var   0.239   0.162   0.151   0.125
## Cumulative Var   0.239   0.401   0.552   0.677
## 
## Test of the hypothesis that 4 factors are sufficient.
## The chi square statistic is 734.47 on 6 degrees of freedom.
## The p-value is 2.2e-155
fa.diagram(fatorial3$loadings, digits = 3, main = "Análise Fatorial - Modelo Rotacionado Varimax")

#Comunalidades
rowSums(fatorial3$loadings^2)
##        fixed.acidity     volatile.acidity          citric.acid 
##            0.9225403            0.1960390            0.5772663 
##       residual.sugar  free.sulfur.dioxide total.sulfur.dioxide 
##            0.3010489            0.5139767            0.8859532 
##              density                   pH              alcohol 
##            0.9950187            0.7054388            0.9950052
# Matriz Residual
L <- fatorial3$loadings

rho_til <- L%*%t(L)+diag(fatorial3$uniquenesses)
U <- cor(dados2.pad) - rho_til
round(U, 4)
##                      fixed.acidity volatile.acidity citric.acid residual.sugar
## fixed.acidity               0.0000           0.0303     -0.0135        -0.0474
## volatile.acidity            0.0303           0.0000     -0.2687        -0.0315
## citric.acid                -0.0135          -0.2687      0.0000         0.0267
## residual.sugar             -0.0474          -0.0315      0.0267         0.0000
## free.sulfur.dioxide         0.0131          -0.0657     -0.0337         0.0163
## total.sulfur.dioxide        0.0000           0.0243      0.0029        -0.0136
## density                     0.0002           0.0000      0.0005         0.0017
## pH                         -0.0079          -0.0407      0.0079        -0.1237
## alcohol                     0.0002           0.0008     -0.0002         0.0009
##                      free.sulfur.dioxide total.sulfur.dioxide density      pH
## fixed.acidity                     0.0131               0.0000  0.0002 -0.0079
## volatile.acidity                 -0.0657               0.0243  0.0000 -0.0407
## citric.acid                      -0.0337               0.0029  0.0005  0.0079
## residual.sugar                    0.0163              -0.0136  0.0017 -0.1237
## free.sulfur.dioxide               0.0000               0.0029 -0.0004  0.0321
## total.sulfur.dioxide              0.0029               0.0000  0.0000 -0.0015
## density                          -0.0004               0.0000  0.0000  0.0008
## pH                                0.0321              -0.0015  0.0008  0.0000
## alcohol                          -0.0003               0.0001  0.0000  0.0004
##                      alcohol
## fixed.acidity          2e-04
## volatile.acidity       8e-04
## citric.acid           -2e-04
## residual.sugar         9e-04
## free.sulfur.dioxide   -3e-04
## total.sulfur.dioxide   1e-04
## density                0e+00
## pH                     4e-04
## alcohol                0e+00

Para esse último modelo, o fator 1 está fortemente relacionado à acidez e Ph. O fator 2 ao dióxido de enxofre, o fator 3 é composto pela quantidade de alcool e o fator 4 pela densidade e açucar residual.

A partir das comunalidades é possível concluir que os 4 fatores explicam cerca de 92% da variabilidade da acidez fixa, pouco mais de 19% da variabilidade da acidez volátil, 57% da variabilidade da acidez cítrica, 30% da variabilidade do açucar residual, 51% da variabilidade do enxofre livre, 88% da variação no enxofre total, 99% da variação na densidade, 70% na variação do Ph e 99% da variabilidade do teor alcólico.

A análise da matriz residual indica a qualidade do modelo, que deve possuir uma matriz residual com valores muito próximos a zero. Assim, a partir desta matriz residual, o modelo em questão indica que a Análise Fatorial se ajusta bem aos dados amostrais, pois a grande maioria dos valores da matriz foram calculados proximos a zero.


2.2.6 Escores Fatoriais


Escores fatoriais são os valores de cada fator para cada observação da amostra. São importantes para mapeamento das observações e para serem utilizadas em outras técnicas, como cluster, regressão, etc. Como se tem um modelo estatístico estes escores devem ser estimados à semelhança de um modelo de regressão onde se obtém previsões para a variável dependente.

#Esimação da AF fazendo a rotação Varimax
fatorial3<- factanal(dados2.pad, factors=4, rotation="varimax", na.action=na.omit, scores = "regression")

escores <- as.data.frame(fatorial3$scores)

head(escores)
##      Factor1    Factor2    Factor3     Factor4
## 1 -1.2360622 -0.5807083 -0.9455739  0.55844235
## 2 -0.2652997  0.6187115 -0.5241086 -0.12643174
## 3 -0.3868632  0.1224125 -0.5626608 -0.01721461
## 4  1.7121168  0.2748879 -0.6437796 -0.23777166
## 5 -1.2360622 -0.5807083 -0.9455739  0.55844235
## 6 -1.2027338 -0.4028737 -0.9294446  0.57104319
tail(escores)
##         Factor1     Factor2    Factor3     Factor4
## 1594 -1.0047242 -0.08672978 -0.8360194 -0.27628205
## 1595 -1.0266198  0.25983888  0.1301690 -0.69497604
## 1596 -1.3018803  0.52578323  0.8478904  0.03093413
## 1597 -1.0580909  0.09027577  0.6045673  0.14173253
## 1598 -1.4658797  0.19227615 -0.1239344 -0.30072705
## 1599 -0.8063892  0.12198128  0.5930127 -0.13129171
ggplot(data = escores, mapping = aes(x = Factor1, y = Factor2)) +
geom_point() +
labs(x = "Fator 1",
y = "Fator 2",
title = "Dispersão dos escores fatoriais") +
theme_bw()


2.2.7 Análise da Adequabilidade


  1. Matriz de Correlações: examinar a matriz de correlações simples, procurando visualizar algum padrão de relacionamento entre as variáveis; devem existir grupos de variáveis correlacionadas;

  2. Matriz Anti-Imagem: Matriz de correlações Parciais com sinais invertidos. Matrizes anti-imagem podem ser usadas para avaliar se variáveis individuais devem ser incluídas na análise fatorial. Isso significa trazer a porção de variância de uma variável que pode ser explicada com as variáveis correlacionadas (imagem) em associação com a porção de variância inexplicável (anti-imagem). As variáveis são adequadas para incluir na análise fatorial se os valores da matriz anti-imagem forem baixos;

  3. Teste de esfericidade de Bartlett: testa se a matriz de correlações é estatisticamente igual a uma matriz identidade. Se for, não é boa para Análise Fatorial. O que se busca, então, é rejeitar a hipótese nula de que a matriz de correlação verdadeira é uma matriz identidade;

  4. Medida KMO (Kayser-Meyer-Olkin): é um índice que compara correlações simples e parciais:

\[ \mathbf{KMO}=\frac{\sum_{i=1}^{p}\sum_{j=1}^{p}r_{ij}^2}{\sum_{i=1}^{p}\sum_{j=1}^{p}r_{ij}^2+\sum_{i=1}^{p}\sum_{j=1}^{p}a_{ij}^2} \] em que \(r_{ij}\) é o coeficiente de correlação simples e \(a_{ij}\) é a correlação parcial.

Quanto mais \(\sum_{i=1}^{p}\sum_{j=1}^{p}a_{ij}^2\) for próximo de 0, mais o valor de \(\mathbf{KMO}\) se aproximará de 1 e mais adequados os dados serão para a Análise fatorial. Valores abaixo de 0,6 são considerados ruins para a Análise Fatorial.

#Correlaçoes Parciais - Matriz anti-imagem coeficientes de corr
partial.cor <- function (X, ...)
{
  R <- cor(X, ...)
  RI <- solve(R)
  D <- 1/sqrt(diag(RI))
  Rp <- -RI * (D %o% D)
  diag(Rp) <- 0
  rownames(Rp) <- colnames(Rp) <- colnames(X)
  Rp
}
matcorp <- partial.cor(dados)
print(matcorp, digits=2)
##                      fixed.acidity volatile.acidity citric.acid residual.sugar
## fixed.acidity                 0.00            0.050      0.3333         -0.431
## volatile.acidity              0.05            0.000     -0.5355         -0.024
## citric.acid                   0.33           -0.535      0.0000          0.053
## residual.sugar               -0.43           -0.024      0.0534          0.000
## chlorides                    -0.23            0.264      0.2637         -0.011
## free.sulfur.dioxide           0.11           -0.165     -0.1625          0.126
## total.sulfur.dioxide         -0.23            0.214      0.2650          0.036
## density                       0.79            0.128      0.0086          0.595
## pH                           -0.72            0.027     -0.0342         -0.329
## sulphates                    -0.15           -0.209      0.0266         -0.201
## alcohol                       0.54            0.079      0.1495          0.502
##                      chlorides free.sulfur.dioxide total.sulfur.dioxide density
## fixed.acidity           -0.233               0.110               -0.232  0.7854
## volatile.acidity         0.264              -0.165                0.214  0.1284
## citric.acid              0.264              -0.162                0.265  0.0086
## residual.sugar          -0.011               0.126                0.036  0.5952
## chlorides                0.000               0.059               -0.140  0.0938
## free.sulfur.dioxide      0.059               0.000                0.663 -0.0854
## total.sulfur.dioxide    -0.140               0.663                0.000  0.0788
## density                  0.094              -0.085                0.079  0.0000
## pH                      -0.231               0.138               -0.194  0.5722
## sulphates                0.351               0.054                0.033  0.2480
## alcohol                 -0.092              -0.026               -0.083 -0.7558
##                          pH sulphates alcohol
## fixed.acidity        -0.719    -0.152   0.543
## volatile.acidity      0.027    -0.209   0.079
## citric.acid          -0.034     0.027   0.149
## residual.sugar       -0.329    -0.201   0.502
## chlorides            -0.231     0.351  -0.092
## free.sulfur.dioxide   0.138     0.054  -0.026
## total.sulfur.dioxide -0.194     0.033  -0.083
## density               0.572     0.248  -0.756
## pH                    0.000    -0.129   0.520
## sulphates            -0.129     0.000   0.289
## alcohol               0.520     0.289   0.000
#Estatística KMO
KMO(cor(dados))
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor(dados))
## Overall MSA =  0.43
## MSA for each item = 
##        fixed.acidity     volatile.acidity          citric.acid 
##                 0.45                 0.52                 0.70 
##       residual.sugar            chlorides  free.sulfur.dioxide 
##                 0.21                 0.46                 0.48 
## total.sulfur.dioxide              density                   pH 
##                 0.45                 0.37                 0.45 
##            sulphates              alcohol 
##                 0.51                 0.23
# Bartlett teste de esfericidade
cortest.bartlett(cor(dados), n = nrow(dados))
## $chisq
## [1] 8017.566
## 
## $p.value
## [1] 0
## 
## $df
## [1] 55
bart_spher(dados)
##  Bartlett's Test of Sphericity
## 
## Call: bart_spher(x = dados)
## 
##      X2 = 8017.566
##      df = 55
## p-value < 2.22e-16


Um outro exemplo é do trabalho que visou construiu um Índice de Desenvolvimento Humano da mesorregião do Campo das Vertentes-MG (IDF-CV), para o ano de 2000, com base em 10 indicadores socioeconômicos de saúde, infraestrutura, educação e vulnerabilidade renda (Esperança de vida ao nascer; Mortalidade até um ano de idade; em cada mil crianças nascidas vivas; Percentual de pessoas que vivem em domicílios com banheiro e água encanada; Percentual de pessoas que vivem em domicílios com energia elétrica e geladeira; Percentual de pessoas que vivem em domicílios urbanos com serviço de coleta de lixo; Percentual de pessoas que vivem em domicílios com carro, computador e TV; Percentual da renda proveniente de transferências governamentais; Razão entre a renda média dos 20% mais ricos e a dos 40% mais pobres; Percentual de pessoas que vivem em famílias com razão de dependência maior que 75%; Taxa de alfabetização). Para isto, foi utilizada a técnica da Análise Fatorial.

#Direcionado o R para o Diretorio a ser trabalhado
setwd('/Users/jricardofl/Dropbox/tempecon/multivariada')

library(tidyverse)
library(skimr)
library(psych)
library(REdaS)

#Lendo os dados no R
dadosc <- read.csv2('idh_mg.csv', header=TRUE, sep=";", dec=".")

dados <- dadosc[,-1]
  
attach(dados)
glimpse(dados)
## Rows: 36
## Columns: 10
## $ esp          <dbl> 70.50, 70.93, 72.47, 69.23, 70.06, 70.18, 72.47, 70.68, 6…
## $ mort         <dbl> 27.17, 25.92, 21.67, 31.06, 28.49, 28.12, 21.67, 26.66, 4…
## $ banho        <dbl> 93.83, 86.76, 96.40, 95.08, 86.22, 74.52, 92.80, 89.01, 8…
## $ energia      <dbl> 75.88, 72.66, 88.31, 77.68, 55.28, 54.61, 73.26, 78.20, 6…
## $ lixo         <dbl> 84.64, 94.26, 95.39, 92.41, 87.94, 79.43, 76.71, 96.06, 8…
## $ rend_transf  <dbl> 18.93, 19.73, 20.92, 24.67, 25.38, 23.27, 24.85, 18.07, 2…
## $ X20_40pobres <dbl> 9.53, 9.74, 13.73, 12.19, 6.80, 9.16, 11.94, 14.60, 7.10,…
## $ alfabet      <dbl> 84.07, 84.50, 91.47, 91.44, 85.59, 85.28, 90.08, 87.84, 8…
## $ ant_3        <dbl> 33.06, 32.33, 58.16, 34.94, 20.72, 24.56, 33.74, 31.10, 2…
## $ dep_75       <dbl> 34.68, 36.62, 33.82, 35.42, 35.33, 40.13, 36.45, 42.85, 3…
head(dados)
##     esp  mort banho energia  lixo rend_transf X20_40pobres alfabet ant_3 dep_75
## 1 70.50 27.17 93.83   75.88 84.64       18.93         9.53   84.07 33.06  34.68
## 2 70.93 25.92 86.76   72.66 94.26       19.73         9.74   84.50 32.33  36.62
## 3 72.47 21.67 96.40   88.31 95.39       20.92        13.73   91.47 58.16  33.82
## 4 69.23 31.06 95.08   77.68 92.41       24.67        12.19   91.44 34.94  35.42
## 5 70.06 28.49 86.22   55.28 87.94       25.38         6.80   85.59 20.72  35.33
## 6 70.18 28.12 74.52   54.61 79.43       23.27         9.16   85.28 24.56  40.13
tail(dados)
##      esp  mort banho energia  lixo rend_transf X20_40pobres alfabet ant_3
## 31 71.31 24.84 96.27   84.67 97.14       20.39         6.45   91.55 30.68
## 32 66.38 40.75 87.08   57.72 83.07       21.20        14.64   80.10 19.99
## 33 74.58 16.43 95.70   90.90 93.08       23.83        10.98   94.01 44.89
## 34 68.90 32.11 93.73   71.91 96.11       19.83         9.19   88.84 26.19
## 35 70.93 25.92 85.90   59.44 86.72       20.65        18.12   81.11 24.68
## 36 71.31 24.84 83.91   87.46 92.94       17.16        11.71   89.51 44.14
##    dep_75
## 31  38.06
## 32  37.95
## 33  33.51
## 34  37.25
## 35  33.41
## 36  36.26
# Estatística descritiva das variáveis
summary(dados)
##       esp             mort           banho          energia     
##  Min.   :65.34   Min.   :16.43   Min.   :74.52   Min.   :47.10  
##  1st Qu.:69.14   1st Qu.:25.36   1st Qu.:85.75   1st Qu.:63.50  
##  Median :70.68   Median :26.66   Median :90.58   Median :73.72  
##  Mean   :70.22   Mean   :28.32   Mean   :89.46   Mean   :73.07  
##  3rd Qu.:71.13   3rd Qu.:31.33   3rd Qu.:93.75   3rd Qu.:82.09  
##  Max.   :74.58   Max.   :44.67   Max.   :99.39   Max.   :94.07  
##       lixo        rend_transf     X20_40pobres       alfabet     
##  Min.   :73.17   Min.   :12.46   Min.   : 6.270   Min.   :76.54  
##  1st Qu.:83.63   1st Qu.:18.82   1st Qu.: 8.615   1st Qu.:85.27  
##  Median :88.75   Median :20.61   Median :11.350   Median :88.41  
##  Mean   :88.45   Mean   :20.59   Mean   :11.111   Mean   :87.49  
##  3rd Qu.:93.67   3rd Qu.:22.55   3rd Qu.:12.480   3rd Qu.:90.69  
##  Max.   :97.14   Max.   :26.39   Max.   :18.670   Max.   :94.01  
##      ant_3           dep_75     
##  Min.   :19.87   Min.   :32.66  
##  1st Qu.:25.57   1st Qu.:35.55  
##  Median :31.25   Median :36.82  
##  Mean   :32.13   Mean   :36.76  
##  3rd Qu.:35.07   3rd Qu.:37.74  
##  Max.   :58.16   Max.   :42.85
skim(dados)
Data summary
Name dados
Number of rows 36
Number of columns 10
_______________________
Column type frequency:
numeric 10
________________________
Group variables None

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
esp 0 1 70.22 1.96 65.34 69.14 70.68 71.13 74.58 ▂▂▇▆▁
mort 0 1 28.32 6.07 16.43 25.36 26.66 31.33 44.67 ▃▇▃▂▂
banho 0 1 89.46 5.56 74.52 85.76 90.58 93.75 99.39 ▁▅▆▇▅
energia 0 1 73.07 12.52 47.10 63.50 73.72 82.09 94.07 ▃▃▆▇▅
lixo 0 1 88.45 6.55 73.17 83.63 88.75 93.67 97.14 ▁▃▃▃▇
rend_transf 0 1 20.59 3.01 12.46 18.82 20.60 22.55 26.39 ▁▂▇▅▃
X20_40pobres 0 1 11.11 3.04 6.27 8.62 11.35 12.48 18.67 ▆▃▇▃▁
alfabet 0 1 87.49 4.30 76.54 85.27 88.41 90.69 94.01 ▂▂▅▇▆
ant_3 0 1 32.13 9.33 19.87 25.56 31.25 35.07 58.16 ▆▇▂▂▁
dep_75 0 1 36.76 2.16 32.66 35.55 36.82 37.74 42.85 ▃▆▇▂▁
#Estatística KMO
KMO(cor(dados))
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor(dados))
## Overall MSA =  0.7
## MSA for each item = 
##          esp         mort        banho      energia         lixo  rend_transf 
##         0.67         0.67         0.73         0.73         0.87         0.51 
## X20_40pobres      alfabet        ant_3       dep_75 
##         0.24         0.85         0.74         0.58
# Bartlett teste de esfericidade
cortest.bartlett(cor(dados), n = nrow(dados))
## $chisq
## [1] 332.1296
## 
## $p.value
## [1] 1.984378e-45
## 
## $df
## [1] 45
bart_spher(dados)
##  Bartlett's Test of Sphericity
## 
## Call: bart_spher(x = dados)
## 
##      X2 = 332.13
##      df = 45
## p-value < 2.22e-16
#Correlaçoes Parciais - Matriz anti-imagem coeficientes de corr
partial.cor <- function (X, ...)
{
  R <- cor(X, ...)
  RI <- solve(R)
  D <- 1/sqrt(diag(RI))
  Rp <- -RI * (D %o% D)
  diag(Rp) <- 0
  rownames(Rp) <- colnames(Rp) <- colnames(X)
  Rp
}
matcorp <- partial.cor(dados)
print(matcorp, digits=2)
##                 esp   mort  banho energia   lixo rend_transf X20_40pobres
## esp           0.000 -0.996  0.053   0.075 -0.114       0.158        0.074
## mort         -0.996  0.000  0.065   0.072 -0.118       0.165        0.059
## banho         0.053  0.065  0.000   0.506  0.293       0.351        0.254
## energia       0.075  0.072  0.506   0.000  0.141      -0.380       -0.404
## lixo         -0.114 -0.118  0.293   0.141  0.000      -0.351        0.017
## rend_transf   0.158  0.165  0.351  -0.380 -0.351       0.000       -0.236
## X20_40pobres  0.074  0.059  0.254  -0.404  0.017      -0.236        0.000
## alfabet      -0.105 -0.116  0.117   0.124  0.068       0.116       -0.423
## ant_3         0.121  0.101 -0.234   0.670  0.027       0.196        0.484
## dep_75       -0.087 -0.072 -0.197   0.156  0.097      -0.073        0.336
##              alfabet  ant_3 dep_75
## esp           -0.105  0.121 -0.087
## mort          -0.116  0.101 -0.072
## banho          0.117 -0.234 -0.197
## energia        0.124  0.670  0.156
## lixo           0.068  0.027  0.097
## rend_transf    0.116  0.196 -0.073
## X20_40pobres  -0.423  0.484  0.336
## alfabet        0.000  0.299  0.199
## ant_3          0.299  0.000 -0.317
## dep_75         0.199 -0.317  0.000
# Definição do número de Fatores

eigv <- eigen(cor(dados))
eigv <- data.frame(nfact = 1:ncol(dados), eigval = eigv$values)
ggplot(data = eigv, mapping = aes(nfact, eigval)) +
geom_line() +
geom_point() +
geom_abline(slope = 0, intercept = 1, color = "red") +
labs(x = "Número de fatores",
y = "Autovalor",
title = "Scree plot") +
theme_bw()

#Padronizaçao dos dados
dados.pad <-as.data.frame(scale(dados))

s <- cov(dados.pad) #matriz de cov com var pad = mat correlaçoes origem

#Autovalores e Autovetores da Matriz de Covariancias
lambda <-eigen(s)$values
lambda[1:3] 
## [1] 4.628794 1.587772 1.339147
evec <-eigen(s)$vectors
evec[,1:3]
##              [,1]        [,2]        [,3]
##  [1,]  0.34885131 -0.28329574  0.42235518
##  [2,] -0.34625878  0.29228336 -0.41385695
##  [3,]  0.33160581  0.23849914 -0.19934006
##  [4,]  0.42552524  0.10846951 -0.18012801
##  [5,]  0.33869887 -0.08357043 -0.40080608
##  [6,] -0.15904596  0.45277917  0.40583177
##  [7,] -0.03376863 -0.60774320  0.06261031
##  [8,]  0.36046960  0.27352317 -0.11576985
##  [9,]  0.41521607  0.01176567  0.05227321
## [10,] -0.15452481 -0.33070885 -0.48244774